var EnjoyHint=function(t){var e,i=this,n=jQuery.extend({onStart:function(){},onEnd:function(){},onSkip:function(){},onNext:function(){}},t),a=[],r=0;$body=jQuery("body");var s=function(t){t.preventDefault()},o=function(){jQuery(".enjoyhint").remove(),$body.css({overflow:"auto"}),jQuery(document).off("touchmove",s)};i.clear=function(){var t=jQuery(".enjoyhint_next_btn"),e=jQuery(".enjoyhint_skip_btn");t.removeClass(i.nextUserClass),t.text("Next"),e.removeClass(i.skipUserClass),e.text("Skip")};var c=function(){if(!a||!a[r])return $body.enjoyhint("hide"),n.onEnd(),void o();n.onNext();var t=jQuery(".enjoyhint");t.removeClass("enjoyhint-step-"+r),t.removeClass("enjoyhint-step-"+(r+1)),t.addClass("enjoyhint-step-"+(r+1));var s=a[r];s.onBeforeStart&&"function"==typeof s.onBeforeStart&&s.onBeforeStart();var h=s.timeout||0;setTimeout(function(){if(!s.selector)for(var t in s)s.hasOwnProperty(t)&&t.split(" ")[1]&&(s.selector=t.split(" ")[1],s.event=t.split(" ")[0],"next"!=t.split(" ")[0]&&"auto"!=t.split(" ")[0]&&"custom"!=t.split(" ")[0]||(s.event_type=t.split(" ")[0]),s.description=s[t]);setTimeout(function(){i.clear()},250),jQuery(document.body).scrollTop(s.selector,s.scrollAnimationSpeed||250,{offset:-100}),setTimeout(function(){var t=jQuery(s.selector),n=d(s.event);if($body.enjoyhint("show"),$body.enjoyhint("hide_next"),e=t,s.event_selector&&(e=jQuery(s.event_selector)),s.event_type||"key"!=s.event||t.keydown(function(t){t.which==s.keyCode&&(r++,c())}),1==s.showNext&&$body.enjoyhint("show_next"),0==s.showSkip?$body.enjoyhint("hide_skip"):$body.enjoyhint("show_skip"),s.showSkip,s.nextButton){var a=jQuery(".enjoyhint_next_btn");a.addClass(s.nextButton.className||""),a.text(s.nextButton.text||"Next"),i.nextUserClass=s.nextButton.className}if(s.skipButton){var o=jQuery(".enjoyhint_skip_btn");o.addClass(s.skipButton.className||""),o.text(s.skipButton.text||"Skip"),i.skipUserClass=s.skipButton.className}if(s.event_type)switch(s.event_type){case"auto":return t[s.event](),s.event,r++,void c();case"custom":u(s.event,function(){r++,f(s.event),c()});break;case"next":$body.enjoyhint("show_next")}else e.on(n,function(t){s.keyCode&&t.keyCode!=s.keyCode||(r++,jQuery(this).off(n),c())});var h=Math.max(t.outerWidth(),t.outerHeight()),l=s.radius||Math.round(h/2)+5,g=t.offset(),p=t.outerWidth(),v=t.outerHeight(),y=void 0!==s.margin?s.margin:10,_={x:g.left+Math.round(p/2),y:g.top+Math.round(v/2)-jQuery(document).scrollTop()},K={enjoyHintElementSelector:s.selector,center_x:_.x,center_y:_.y,text:s.description,top:s.top,bottom:s.bottom,left:s.left,right:s.right,margin:s.margin,scroll:s.scroll};s.shape&&"circle"==s.shape?(K.shape="circle",K.radius=l):(K.radius=0,K.width=p+y,K.height=v+y),$body.enjoyhint("render_label_with_shape",K,i.stop)},s.scrollAnimationSpeed+20||270)},h)},h=function(){r++,c()},l=function(){var t=a[r],e=jQuery(t.selector);f(t.event),e.off(d(t.event)),o()},d=function(t,e){return t+(e?"custom":"")+".enjoy_hint"},u=function(t,e){$body.on(d(t,!0),e)},f=function(t){$body.off(d(t,!0))};window.addEventListener("resize",function(){null!=e&&$body.enjoyhint("redo_events_near_rect",e[0].getBoundingClientRect())}),i.stop=function(){l()},i.reRunScript=function(t){r=t,c()},i.runScript=function(){r=0,n.onStart(),c()},i.resumeScript=function(){c()},i.setCurrentStep=function(t){r=t},i.getCurrentStep=function(){return r},i.trigger=function(t){switch(t){case"next":h();break;case"skip":l()}},i.setScript=function(t){t&&(a=t)},i.set=function(t){i.setScript(t)},i.setSteps=function(t){i.setScript(t)},i.run=function(){i.runScript()},i.resume=function(){i.resumeScript()},jQuery(".enjoyhint")&&jQuery(".enjoyhint").remove(),$body.css({overflow:"hidden"}),jQuery(document).on("touchmove",s),$body.enjoyhint({onNextClick:function(){h()},onSkipClick:function(){n.onSkip(),l()}})};CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,n,a){return i<2*a&&(a=i/2),n<2*a&&(a=n/2),this.beginPath(),this.moveTo(t+a,e),this.arcTo(t+i,e,t+i,e+n,a),this.arcTo(t+i,e+n,t,e+n,a),this.arcTo(t,e+n,t,e,a),this.arcTo(t,e,t+i,e,a),this.closePath(),this},function(t){var e,i,n,a,r,s,o,c=window.innerWidth,h=window.innerHeight,l={init:function(t){return this.each(function(){this.enjoyhint_obj={},(e=this.enjoyhint_obj).resetComponentStuff=function(){i=null,n=null,a=null,r=null,s=null,null,o=null,null,null,null,c=window.innerWidth,h=window.innerHeight};var l=jQuery(this);function d(t,e){var i=document.createElementNS("http://www.w3.org/2000/svg",t);for(var n in e)i.setAttribute(n,e[n]);return i}e.options=jQuery.extend({onNextClick:function(){},onSkipClick:function(){},animation_time:800},t),e.gcl={chooser:"enjoyhint"},e.cl={enjoy_hint:"enjoyhint",hide:"enjoyhint_hide",disable_events_element:"enjoyhint_disable_events",btn:"enjoyhint_btn",skip_btn:"enjoyhint_skip_btn",close_btn:"enjoyhint_close_btn",next_btn:"enjoyhint_next_btn",main_canvas:"enjoyhint_canvas",main_svg:"enjoyhint_svg",svg_wrapper:"enjoyhint_svg_wrapper",svg_transparent:"enjoyhint_svg_transparent",kinetic_container:"kinetic_container"},e.canvas_size={w:1.4*jQuery(window).width(),h:1.4*jQuery(window).height()};e.enjoyhint=jQuery("
",{class:e.cl.enjoy_hint+" "+e.cl.svg_transparent}).appendTo(l),e.enjoyhint_svg_wrapper=jQuery("
",{class:e.cl.svg_wrapper+" "+e.cl.svg_transparent}).appendTo(e.enjoyhint),e.$stage_container=jQuery('
').appendTo(e.enjoyhint),e.$canvas=jQuery('').appendTo(e.enjoyhint),e.$svg=jQuery('').appendTo(e.enjoyhint_svg_wrapper);var u=jQuery(d("defs")),f=jQuery(d("marker",{id:"arrowMarker",viewBox:"0 0 36 21",refX:"21",refY:"10",markerUnits:"strokeWidth",orient:"auto",markerWidth:"16",markerHeight:"12"})),g=jQuery(d("path",{style:"fill:none; stroke:rgb(255,255,255); stroke-width:2",d:"M0,0 c30,11 30,9 0,20"}));u.append(f.append(g)).appendTo(e.$svg),e.kinetic_stage=new Kinetic.Stage({container:e.cl.kinetic_container,width:e.canvas_size.w,height:e.canvas_size.h,scaleX:1}),e.layer=new Kinetic.Layer,e.rect=new Kinetic.Rect({fill:"rgba(0,0,0,0.6)",width:e.canvas_size.w,height:e.canvas_size.h});var p=jQuery("
",{class:e.cl.disable_events_element}).appendTo(e.enjoyhint),v=p.clone().appendTo(e.enjoyhint),y=p.clone().appendTo(e.enjoyhint),_=p.clone().appendTo(e.enjoyhint),K=function(t){t.stopImmediatePropagation()};jQuery("button").focusout(K),p.click(K),v.click(K),y.click(K),_.click(K),e.$skip_btn=jQuery("
",{class:e.cl.skip_btn}).appendTo(e.enjoyhint).html("Skip").click(function(t){e.hide(),e.options.onSkipClick()}),e.$next_btn=jQuery("
",{class:e.cl.next_btn}).appendTo(e.enjoyhint).html("Next").click(function(t){e.options.onNextClick()}),e.$close_btn=jQuery("
",{class:e.cl.close_btn}).appendTo(e.enjoyhint).html("").click(function(t){e.hide(),e.options.onSkipClick()}),e.$canvas.mousedown(function(t){jQuery("canvas").css({left:"4000px"});var e=document.elementFromPoint(t.clientX,t.clientY);return jQuery("canvas").css({left:"0px"}),jQuery(e).click(),!1});e.shape=new Kinetic.Shape({radius:0,center_x:-130,center_y:-130,width:0,height:0,sceneFunc:function(t){var e=this.getContext("2d")._context,i=(this.pos,e.globalCompositeOperation);e.globalCompositeOperation="destination-out",e.beginPath();var n=this.attrs.center_x-Math.round(this.attrs.width/2),a=this.attrs.center_y-Math.round(this.attrs.height/2);e.roundRect(n,a,this.attrs.width,this.attrs.height,this.attrs.radius),e.fillStyle="red",e.fill(),e.globalCompositeOperation=i}}),e.shape.radius=0,e.layer.add(e.rect),e.layer.add(e.shape),e.kinetic_stage.add(e.layer),setTimeout(function(){if(!jQuery(e.stepData.enjoyHintElementSelector).is(":visible"))return e.stopFunction(),void jQuery(window).off("resize");window.innerWidth,window.innerHeight;var t=jQuery(e.stepData.enjoyHintElementSelector)[0].getBoundingClientRect();e.shape.attrs.center_x=Math.round(t.left+t.width/2),e.shape.attrs.center_y=Math.round(t.top+t.height/2),e.shape.attrs.width=t.width+11,e.shape.attrs.height=t.height+11;var l=window.innerWidth,d=window.innerHeight,u=l/c,f=d/h;if(e.kinetic_stage.setAttr("width",c*u),e.kinetic_stage.setAttr("height",h*f),null!=e.stepData){if(window.innerWidth,window.innerHeight,s||(s=e.shape.attrs.center_x,e.shape.attrs.center_y),!a){a=[];var g=jQuery("#enjoyhint_arrpw_line").attr("d");a.push(g.substr(1).split(",")[0]),a.push(g.substr(g.indexOf("Q")+1).split(",")[0]),a.push(g.split(" ")[2].split(",")[0]),(r=[]).push(g.split(",")[1].split(" ")[0]),r.push(g.split(",")[2].split(" ")[0]),r.push(g.split(",")[3])}var p=jQuery(".enjoy_hint_label");i||(i=p[0].getBoundingClientRect().left,n=p[0].getBoundingClientRect().top);var v=jQuery(".enjoyhint_skip_btn");o||(o=v[0].getBoundingClientRect().left,v[0].getBoundingClientRect().top),p.css("left",window.innerWidth/2-p.outerWidth()/2);var y=p[0].getBoundingClientRect();if(window.innerWidth<640)jQuery("#enjoyhint_arrpw_line").hide(),p.css("top",window.innerHeight/2-p.outerHeight()/2);else{var _,K,m,S;jQuery("#enjoyhint_arrpw_line").show(),p.css("top",n);var w=y.left+y.width/2=640){var i=t.x_from||0,n=t.y_from||0,a=t.x_to||0,r=t.y_to||0,s=t.by_top_side,o=0,c=0;s?n>=r?(c=r,o=i):(c=n,o=a):n>=r?(c=n,o=a):(c=r,o=i)}t.text;e.enjoyhint.addClass(e.cl.svg_transparent),setTimeout(function(){jQuery("#enjoyhint_arrpw_line").remove();var t="M"+i+","+n+" Q"+o+","+c+" "+a+","+r;e.$svg.append(d("path",{style:"fill:none; stroke:rgb(255,255,255); stroke-width:3","marker-end":"url(#arrowMarker)",d:t,id:"enjoyhint_arrpw_line"})),e.enjoyhint.removeClass(e.cl.svg_transparent)},e.options.animation_time/2)},e.getLabelElement=function(t){return jQuery("
",{class:"enjoy_hint_label",id:"enjoyhint_label"}).css({top:t.y+"px",left:t.x+"px"}).html(t.text).appendTo(e.enjoyhint)},e.disableEventsNearRect=function(t){p.css({top:"0",left:"0"}).height(t.top),v.css({top:t.bottom+"px",left:"0"}),y.css({top:"0",left:"0px"}).width(t.left),_.css({top:"0",left:t.right+"px"})},jQuery,jQuery.event.special.destroyed={remove:function(t){t.handler&&t.handler()}},e.renderLabelWithShape=function(t){e.stepData=t;var i=function t(e){return"MD-DIALOG"===e.tagName?e:void 0===e.tagName?null:t(jQuery(e).parent()[0])}(jQuery(e.stepData.enjoyHintElementSelector)[0]);null!=i&&jQuery(i).on("dialogClosing",function(){e.stopFunction()}),e.resetComponentStuff();var n=t.shape||"rect",a={},r=0,s=0,o=t.top||0,c=t.bottom||0,h=t.left||0,l=t.right||0;switch(n){case"circle":r=s=t.radius;var d=(p={top:t.center_y-s+o,bottom:t.center_y+s-c,left:t.center_x-r+h,right:t.center_x+r-l}).right-p.left,u=p.bottom-p.top;t.radius=Math.round(Math.min(d,u)/2),r=s=Math.round(t.radius/2);var f=Math.round(d/2),g=Math.round(u/2);t.center_x=p.left+f,t.center_y=p.top+g,a=e.renderCircle({x:t.center_x,y:t.center_y,r:t.radius});break;case"rect":r=Math.round(t.width/2),s=Math.round(t.height/2);var p={top:t.center_y-s+o,bottom:t.center_y+s-c,left:t.center_x-r+h,right:t.center_x+r-l};t.width=p.right-p.left,t.height=p.bottom-p.top,r=Math.round(t.width/2),s=Math.round(t.height/2),t.center_x=p.left+r,t.center_y=p.top+s,a=e.renderRect({x:t.center_x,y:t.center_y,w:t.width,h:t.height,r:t.radius},.2)}var v=e.enjoyhint.width(),y=e.enjoyhint.height(),_=e.getLabelElement({x:0,y:0,text:t.text}),K=_.outerWidth(),m=_.outerHeight();_.remove();var S=t.center_y-s,w=y-(t.center_y+s),x=(t.center_x,t.center_x,t.center_x,t.center_x,150+m+40),C=s+150,b="top"==(y-t.center_y=a.x,G=T.righta.bottom,R=T.bottom>=a.y&&T.top<=a.y,I=T.bottom<=a.y&&!L,N=T.top>=a.y&&!j;function B(t,e,i){A=t,M=e,k=i}function H(t,e,i,n,a){var r=[];(r=L?t:I?e:R?i:N?n:a)&&B(r[0],r[1],r[2])}if(D)if(L)B("bottom","top","top");else{if(!j)return;B("top","bottom","bottom")}else G?H(["right","top","top"],["bottom","left","bottom"],["right","left","top"],["top","left","top"],["right","bottom","bottom"]):H(["left","top","top"],["bottom","right","bottom"],["left","right","top"],["top","right","top"],["left","bottom","bottom"]);var O=T.conn[A],E=a.conn[M],U="top"==k;e.renderArrow({x_from:O.x,y_from:O.y,x_to:window.innerWidth<640?a.left+(a.left>0):E.x,y_to:window.innerWidth<640?a.conn.left.y:E.y,by_top_side:U})},e.clear=function(){e.ctx.clearRect(0,0,3e3,2e3)},this})},set:function(t){return this.each(function(){this.enjoyhint_obj.setValue(t)}),this},show:function(){return this.each(function(){this.enjoyhint_obj.show()}),this},hide:function(){return this.each(function(){this.enjoyhint_obj.hide()}),this},hide_next:function(){return this.each(function(){this.enjoyhint_obj.hideNextBtn()}),this},show_next:function(){return this.each(function(){this.enjoyhint_obj.showNextBtn()}),this},hide_skip:function(){return this.each(function(){this.enjoyhint_obj.hideSkipBtn()}),this},show_skip:function(){return this.each(function(){this.enjoyhint_obj.showSkipBtn()}),this},render_circle:function(t,e,i){return this.each(function(){this.enjoyhint_obj.renderCircle(t,e,i)}),this},render_label:function(t,e,i){return this.each(function(){this.enjoyhint_obj.renderLabel(t,e,i)}),this},render_label_with_shape:function(t,i){return this.each(function(){e.stopFunction=i,this.enjoyhint_obj.renderLabelWithShape(t)}),this},redo_events_near_rect:function(t){e.disableEventsNearRect({top:t.top,bottom:t.bottom,left:t.left,right:t.right})},clear:function(){return this.each(function(){this.enjoyhint_obj.clear()}),this},close:function(t){return this.each(function(){this.enjoyhint_obj.closePopdown()}),this}};jQuery.fn.enjoyhint=function(t){return l[t]?l[t].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof t&&t?(jQuery.error("Method "+t+" does not exist on $.numinput"),this):l.init.apply(this,arguments)}}(window.jQuery);var Kinetic={};!function(t){var e=Math.PI/180;(Kinetic={version:"5.2.0",stages:[],idCounter:0,ids:{},names:{},shapes:{},listenClickTap:!1,inDblClickWindow:!1,enableTrace:!1,traceArrMax:100,dblClickWindow:400,pixelRatio:void 0,dragDistance:0,angleDeg:!0,showWarnings:!0,Filters:{},Node:function(t){this._init(t)},Shape:function(t){this.__init(t)},Container:function(t){this.__init(t)},Stage:function(t){this.___init(t)},BaseLayer:function(t){this.___init(t)},Layer:function(t){this.____init(t)},FastLayer:function(t){this.____init(t)},Group:function(t){this.___init(t)},isDragging:function(){var t=Kinetic.DD;return!!t&&t.isDragging},isDragReady:function(){var t=Kinetic.DD;return!!t&&!!t.node},_addId:function(t,e){void 0!==e&&(this.ids[e]=t)},_removeId:function(t){void 0!==t&&delete this.ids[t]},_addName:function(t,e){if(void 0!==e)for(var i=e.split(/\s/g),n=0;n"),Kinetic.window=Kinetic.document.createWindow(),Kinetic.window.Image=n.Image,Kinetic._nodeCanvas=n}return Kinetic.root=t,void(module.exports=i)}"function"==typeof define&&define.amd&&define(e),Kinetic.document=document,Kinetic.window=window,Kinetic.root=t}(this,function(){return Kinetic}),function(){Kinetic.Collection=function(){var t=[].slice.call(arguments),e=t.length,i=0;for(this.length=e;e>i;i++)this[i]=t[i];return this},Kinetic.Collection.prototype=[],Kinetic.Collection.prototype.each=function(t){for(var e=0;et;t++)e.push(this[t]);return e},Kinetic.Collection.toCollection=function(t){var e,i=new Kinetic.Collection,n=t.length;for(e=0;n>e;e++)i.push(t[e]);return i},Kinetic.Collection._mapMethod=function(t){Kinetic.Collection.prototype[t]=function(){var e,i=this.length,n=[].slice.call(arguments);for(e=0;i>e;e++)this[e][t].apply(this[e],n);return this}},Kinetic.Collection.mapMethods=function(t){var e=t.prototype;for(var i in e)Kinetic.Collection._mapMethod(i)},Kinetic.Transform=function(t){this.m=t&&t.slice()||[1,0,0,1,0,0]},Kinetic.Transform.prototype={copy:function(){return new Kinetic.Transform(this.m)},point:function(t){var e=this.m;return{x:e[0]*t.x+e[2]*t.y+e[4],y:e[1]*t.x+e[3]*t.y+e[5]}},translate:function(t,e){return this.m[4]+=this.m[0]*t+this.m[2]*e,this.m[5]+=this.m[1]*t+this.m[3]*e,this},scale:function(t,e){return this.m[0]*=t,this.m[1]*=t,this.m[2]*=e,this.m[3]*=e,this},rotate:function(t){var e=Math.cos(t),i=Math.sin(t),n=this.m[0]*e+this.m[2]*i,a=this.m[1]*e+this.m[3]*i,r=this.m[0]*-i+this.m[2]*e,s=this.m[1]*-i+this.m[3]*e;return this.m[0]=n,this.m[1]=a,this.m[2]=r,this.m[3]=s,this},getTranslation:function(){return{x:this.m[4],y:this.m[5]}},skew:function(t,e){var i=this.m[0]+this.m[2]*e,n=this.m[1]+this.m[3]*e,a=this.m[2]+this.m[0]*t,r=this.m[3]+this.m[1]*t;return this.m[0]=i,this.m[1]=n,this.m[2]=a,this.m[3]=r,this},multiply:function(t){var e=this.m[0]*t.m[0]+this.m[2]*t.m[1],i=this.m[1]*t.m[0]+this.m[3]*t.m[1],n=this.m[0]*t.m[2]+this.m[2]*t.m[3],a=this.m[1]*t.m[2]+this.m[3]*t.m[3],r=this.m[0]*t.m[4]+this.m[2]*t.m[5]+this.m[4],s=this.m[1]*t.m[4]+this.m[3]*t.m[5]+this.m[5];return this.m[0]=e,this.m[1]=i,this.m[2]=n,this.m[3]=a,this.m[4]=r,this.m[5]=s,this},invert:function(){var t=1/(this.m[0]*this.m[3]-this.m[1]*this.m[2]),e=this.m[3]*t,i=-this.m[1]*t,n=-this.m[2]*t,a=this.m[0]*t,r=t*(this.m[2]*this.m[5]-this.m[3]*this.m[4]),s=t*(this.m[1]*this.m[4]-this.m[0]*this.m[5]);return this.m[0]=e,this.m[1]=i,this.m[2]=n,this.m[3]=a,this.m[4]=r,this.m[5]=s,this},getMatrix:function(){return this.m},setAbsolutePosition:function(t,e){var i=this.m[0],n=this.m[1],a=this.m[2],r=this.m[3],s=this.m[4],o=(i*(e-this.m[5])-n*(t-s))/(i*r-n*a),c=(t-s-a*o)/i;return this.translate(c,o)}};var t=Math.PI/180,e=180/Math.PI,i={aqua:[0,255,255],lime:[0,255,0],silver:[192,192,192],black:[0,0,0],maroon:[128,0,0],teal:[0,128,128],blue:[0,0,255],navy:[0,0,128],white:[255,255,255],fuchsia:[255,0,255],olive:[128,128,0],yellow:[255,255,0],orange:[255,165,0],gray:[128,128,128],purple:[128,0,128],green:[0,128,0],red:[255,0,0],pink:[255,192,203],cyan:[0,255,255],transparent:[255,255,255,0]},n=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/;Kinetic.Util={_isElement:function(t){return!(!t||1!=t.nodeType)},_isFunction:function(t){return!!(t&&t.constructor&&t.call&&t.apply)},_isObject:function(t){return!!t&&t.constructor==Object},_isArray:function(t){return"[object Array]"==Object.prototype.toString.call(t)},_isNumber:function(t){return"[object Number]"==Object.prototype.toString.call(t)},_isString:function(t){return"[object String]"==Object.prototype.toString.call(t)},_throttle:function(t,e,i){var n,a,r,s=null,o=0,c=i||{},h=function(){o=!1===c.leading?0:(new Date).getTime(),s=null,r=t.apply(n,a),n=a=null};return function(){var i=(new Date).getTime();o||!1!==c.leading||(o=i);var l=e-(i-o);return n=this,a=arguments,0>=l?(clearTimeout(s),s=null,o=i,r=t.apply(n,a),n=a=null):s||!1===c.trailing||(s=setTimeout(h,l)),r}},_hasMethods:function(t){var e,i=[];for(e in t)this._isFunction(t[e])&&i.push(e);return i.length>0},createCanvasElement:function(){var t=Kinetic.document.createElement("canvas");try{t.style=t.style||{}}catch(t){}return t},isBrowser:function(){return"object"!=typeof exports},_isInDocument:function(t){for(;t=t.parentNode;)if(t==Kinetic.document)return!0;return!1},_simplifyArray:function(t){var e,i,n=[],a=t.length,r=Kinetic.Util;for(e=0;a>e;e++)i=t[e],r._isNumber(i)?i=Math.round(1e3*i)/1e3:r._isString(i)||(i=i.toString()),n.push(i);return n},_getImage:function(t,e){var i,n;if(t)if(this._isElement(t))e(t);else if(this._isString(t))(i=new Kinetic.window.Image).onload=function(){e(i)},i.src=t;else if(t.data){(n=Kinetic.Util.createCanvasElement()).width=t.width,n.height=t.height,n.getContext("2d").putImageData(t,0,0),this._getImage(n.toDataURL(),e)}else e(null);else e(null)},_getRGBAString:function(t){return["rgba(",t.red||0,",",t.green||0,",",t.blue||0,",",t.alpha||1,")"].join("")},_rgbToHex:function(t,e,i){return((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},_hexToRgb:function(t){t=t.replace("#","");var e=parseInt(t,16);return{r:e>>16&255,g:e>>8&255,b:255&e}},getRandomColor:function(){for(var t=(16777215*Math.random()<<0).toString(16);t.length<6;)t="0"+t;return"#"+t},get:function(t,e){return void 0===t?e:t},getRGB:function(t){var e;return t in i?{r:(e=i[t])[0],g:e[1],b:e[2]}:"#"===t[0]?this._hexToRgb(t.substring(1)):"rgb("===t.substr(0,4)?(e=n.exec(t.replace(/ /g,"")),{r:parseInt(e[1],10),g:parseInt(e[2],10),b:parseInt(e[3],10)}):{r:0,g:0,b:0}},_merge:function(t,e){var i=this._clone(e);for(var n in t)i[n]=this._isObject(t[n])?this._merge(t[n],i[n]):t[n];return i},cloneObject:function(t){var e={};for(var i in t)e[i]=this._isObject(t[i])?this.cloneObject(t[i]):this._isArray(t[i])?this.cloneArray(t[i]):t[i];return e},cloneArray:function(t){return t.slice(0)},_degToRad:function(e){return e*t},_radToDeg:function(t){return t*e},_capitalize:function(t){return t.charAt(0).toUpperCase()+t.slice(1)},error:function(t){throw new Error("Kinetic error: "+t)},warn:function(t){Kinetic.root.console&&console.warn&&Kinetic.showWarnings&&console.warn("Kinetic warning: "+t)},extend:function(t,e){function i(){this.constructor=t}i.prototype=e.prototype;var n=t.prototype;for(var a in t.prototype=new i,n)n.hasOwnProperty(a)&&(t.prototype[a]=n[a]);t.__super__=e.prototype},addMethods:function(t,e){var i;for(i in e)t.prototype[i]=e[i]},_getControlPoints:function(t,e,i,n,a,r,s){var o=Math.sqrt(Math.pow(i-t,2)+Math.pow(n-e,2)),c=Math.sqrt(Math.pow(a-i,2)+Math.pow(r-n,2)),h=s*o/(o+c),l=s*c/(o+c);return[i-h*(a-t),n-h*(r-e),i+l*(a-t),n+l*(r-e)]},_expandPoints:function(t,e){var i,n,a=t.length,r=[];for(i=2;a-2>i;i+=2)n=Kinetic.Util._getControlPoints(t[i-2],t[i-1],t[i],t[i+1],t[i+2],t[i+3],e),r.push(n[0]),r.push(n[1]),r.push(t[i]),r.push(t[i+1]),r.push(n[2]),r.push(n[3]);return r},_removeLastLetter:function(t){return t.substring(0,t.length-1)}}}(),function(){var t=Kinetic.Util.createCanvasElement().getContext("2d"),e=Kinetic.UA.mobile?(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1):1;Kinetic.Canvas=function(t){this.init(t)},Kinetic.Canvas.prototype={init:function(t){var i=(t||{}).pixelRatio||Kinetic.pixelRatio||e;this.pixelRatio=i,this._canvas=Kinetic.Util.createCanvasElement(),this._canvas.style.padding=0,this._canvas.style.margin=0,this._canvas.style.border=0,this._canvas.style.background="transparent",this._canvas.style.position="absolute",this._canvas.style.top=0,this._canvas.style.left=0},getContext:function(){return this.context},getPixelRatio:function(){return this.pixelRatio},setPixelRatio:function(t){this.pixelRatio=t,this.setSize(this.getWidth(),this.getHeight())},setWidth:function(t){this.width=this._canvas.width=t*this.pixelRatio,this._canvas.style.width=t+"px"},setHeight:function(t){this.height=this._canvas.height=t*this.pixelRatio,this._canvas.style.height=t+"px"},getWidth:function(){return this.width},getHeight:function(){return this.height},setSize:function(t,e){this.setWidth(t),this.setHeight(e)},toDataURL:function(t,e){try{return this._canvas.toDataURL(t,e)}catch(t){try{return this._canvas.toDataURL()}catch(t){return Kinetic.Util.warn("Unable to get data URL. "+t.message),""}}}},Kinetic.SceneCanvas=function(t){var e=t||{},i=e.width||0,n=e.height||0;Kinetic.Canvas.call(this,e),this.context=new Kinetic.SceneContext(this),this.setSize(i,n)},Kinetic.SceneCanvas.prototype={setWidth:function(t){var e=this.pixelRatio,i=this.getContext()._context;Kinetic.Canvas.prototype.setWidth.call(this,t),i.scale(e,e)},setHeight:function(t){var e=this.pixelRatio,i=this.getContext()._context;Kinetic.Canvas.prototype.setHeight.call(this,t),i.scale(e,e)}},Kinetic.Util.extend(Kinetic.SceneCanvas,Kinetic.Canvas),Kinetic.HitCanvas=function(t){var e=t||{},i=e.width||0,n=e.height||0;Kinetic.Canvas.call(this,e),this.context=new Kinetic.HitContext(this),this.setSize(i,n),this.hitCanvas=!0},Kinetic.Util.extend(Kinetic.HitCanvas,Kinetic.Canvas)}(),function(){var t=["arc","arcTo","beginPath","bezierCurveTo","clearRect","clip","closePath","createLinearGradient","createPattern","createRadialGradient","drawImage","fill","fillText","getImageData","createImageData","lineTo","moveTo","putImageData","quadraticCurveTo","rect","restore","rotate","save","scale","setLineDash","setTransform","stroke","strokeText","transform","translate"];Kinetic.Context=function(t){this.init(t)},Kinetic.Context.prototype={init:function(t){this.canvas=t,this._context=t._canvas.getContext("2d"),Kinetic.enableTrace&&(this.traceArr=[],this._enableTrace())},fillShape:function(t){t.getFillEnabled()&&this._fill(t)},strokeShape:function(t){t.getStrokeEnabled()&&this._stroke(t)},fillStrokeShape:function(t){t.getFillEnabled()&&this._fill(t),t.getStrokeEnabled()&&this._stroke(t)},getTrace:function(t){var e,i,n,a,r=this.traceArr,s=r.length,o="";for(e=0;s>e;e++)(n=(i=r[e]).method)?(a=i.args,o+=n,o+=t?"()":Kinetic.Util._isArray(a[0])?"(["+a.join(",")+"])":"("+a.join(",")+")"):(o+=i.property,t||(o+="="+i.val)),o+=";";return o},clearTrace:function(){this.traceArr=[]},_trace:function(t){var e=this.traceArr;e.push(t),e.length>=Kinetic.traceArrMax&&e.shift()},reset:function(){var t=this.getCanvas().getPixelRatio();this.setTransform(1*t,0,0,1*t,0,0)},getCanvas:function(){return this.canvas},clear:function(t){var e=this.getCanvas();t?this.clearRect(t.x||0,t.y||0,t.width||0,t.height||0):this.clearRect(0,0,e.getWidth(),e.getHeight())},_applyLineCap:function(t){var e=t.getLineCap();e&&this.setAttr("lineCap",e)},_applyOpacity:function(t){var e=t.getAbsoluteOpacity();1!==e&&this.setAttr("globalAlpha",e)},_applyLineJoin:function(t){var e=t.getLineJoin();e&&this.setAttr("lineJoin",e)},setAttr:function(t,e){this._context[t]=e},arc:function(){var t=arguments;this._context.arc(t[0],t[1],t[2],t[3],t[4],t[5])},beginPath:function(){this._context.beginPath()},bezierCurveTo:function(){var t=arguments;this._context.bezierCurveTo(t[0],t[1],t[2],t[3],t[4],t[5])},clearRect:function(){var t=arguments;this._context.clearRect(t[0],t[1],t[2],t[3])},clip:function(){this._context.clip()},closePath:function(){this._context.closePath()},createImageData:function(){var t=arguments;return 2===t.length?this._context.createImageData(t[0],t[1]):1===t.length?this._context.createImageData(t[0]):void 0},createLinearGradient:function(){var t=arguments;return this._context.createLinearGradient(t[0],t[1],t[2],t[3])},createPattern:function(){var t=arguments;return this._context.createPattern(t[0],t[1])},createRadialGradient:function(){var t=arguments;return this._context.createRadialGradient(t[0],t[1],t[2],t[3],t[4],t[5])},drawImage:function(){var t=arguments,e=this._context;3===t.length?e.drawImage(t[0],t[1],t[2]):5===t.length?e.drawImage(t[0],t[1],t[2],t[3],t[4]):9===t.length&&e.drawImage(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8])},fill:function(){this._context.fill()},fillText:function(){var t=arguments;this._context.fillText(t[0],t[1],t[2])},getImageData:function(){var t=arguments;return this._context.getImageData(t[0],t[1],t[2],t[3])},lineTo:function(){var t=arguments;this._context.lineTo(t[0],t[1])},moveTo:function(){var t=arguments;this._context.moveTo(t[0],t[1])},rect:function(){var t=arguments;this._context.rect(t[0],t[1],t[2],t[3])},putImageData:function(){var t=arguments;this._context.putImageData(t[0],t[1],t[2])},quadraticCurveTo:function(){var t=arguments;this._context.quadraticCurveTo(t[0],t[1],t[2],t[3])},restore:function(){this._context.restore()},rotate:function(){var t=arguments;this._context.rotate(t[0])},save:function(){this._context.save()},scale:function(){var t=arguments;this._context.scale(t[0],t[1])},setLineDash:function(){var t=arguments,e=this._context;this._context.setLineDash?e.setLineDash(t[0]):"mozDash"in e?e.mozDash=t[0]:"webkitLineDash"in e&&(e.webkitLineDash=t[0])},setTransform:function(){var t=arguments;this._context.setTransform(t[0],t[1],t[2],t[3],t[4],t[5])},stroke:function(){this._context.stroke()},strokeText:function(){var t=arguments;this._context.strokeText(t[0],t[1],t[2])},transform:function(){var t=arguments;this._context.transform(t[0],t[1],t[2],t[3],t[4],t[5])},translate:function(){var t=arguments;this._context.translate(t[0],t[1])},_enableTrace:function(){var e,i,n=this,a=t.length,r=Kinetic.Util._simplifyArray,s=this.setAttr,o=function(t){var e,a=n[t];n[t]=function(){return i=r(Array.prototype.slice.call(arguments,0)),e=a.apply(n,arguments),n._trace({method:t,args:i}),e}};for(e=0;a>e;e++)o(t[e]);n.setAttr=function(){s.apply(n,arguments),n._trace({property:arguments[0],val:arguments[1]})}}},Kinetic.SceneContext=function(t){Kinetic.Context.call(this,t)},Kinetic.SceneContext.prototype={_fillColor:function(t){var e=t.fill()||Kinetic.Util._getRGBAString({red:t.fillRed(),green:t.fillGreen(),blue:t.fillBlue(),alpha:t.fillAlpha()});this.setAttr("fillStyle",e),t._fillFunc(this)},_fillPattern:function(t){var e=t.getFillPatternImage(),i=t.getFillPatternX(),n=t.getFillPatternY(),a=t.getFillPatternScale(),r=Kinetic.getAngle(t.getFillPatternRotation()),s=t.getFillPatternOffset(),o=t.getFillPatternRepeat();(i||n)&&this.translate(i||0,n||0),r&&this.rotate(r),a&&this.scale(a.x,a.y),s&&this.translate(-1*s.x,-1*s.y),this.setAttr("fillStyle",this.createPattern(e,o||"repeat")),this.fill()},_fillLinearGradient:function(t){var e=t.getFillLinearGradientStartPoint(),i=t.getFillLinearGradientEndPoint(),n=t.getFillLinearGradientColorStops(),a=this.createLinearGradient(e.x,e.y,i.x,i.y);if(n){for(var r=0;ro;o++)t[c=a[o]]=this.getAttr(n+l(c));return t},i.prototype[u]=function(t){var e,i=this.attrs[n];for(e in r&&(t=r.call(this,t)),t)this._setAttr(n+l(e),t[e]);return this._fireChangeEvent(n,i,t),s&&s.call(this),this},this.addOverloadedGetterSetter(i,n)},addOverloadedGetterSetter:function(i,n){var a=Kinetic.Util._capitalize(n),r=e+a,s=t+a;i.prototype[n]=function(){return arguments.length?(this[r](arguments[0]),this):this[s]()}},backCompat:function(t,e){var i;for(i in e)t.prototype[i]=t.prototype[e[i]]},afterSetFilter:function(){this._filterUpToDate=!1}},Kinetic.Validators={RGBComponent:function(t){return t>255?255:0>t?0:Math.round(t)},alphaComponent:function(t){return t>1?1:1e-4>t?1e-4:t}}}(),function(){var t="absoluteOpacity",e="absoluteTransform",i="listening",n="mouseenter",a="mouseleave",r="Shape",s="stage",o="transform",c="visible",h=["id"],l=["xChange.kinetic","yChange.kinetic","scaleXChange.kinetic","scaleYChange.kinetic","skewXChange.kinetic","skewYChange.kinetic","rotationChange.kinetic","offsetXChange.kinetic","offsetYChange.kinetic","transformsEnabledChange.kinetic"].join(" ");Kinetic.Util.addMethods(Kinetic.Node,{_init:function(n){var a=this;this._id=Kinetic.idCounter++,this.eventListeners={},this.attrs={},this._cache={},this._filterUpToDate=!1,this.setAttrs(n),this.on(l,function(){this._clearCache(o),a._clearSelfAndDescendantCache(e)}),this.on("visibleChange.kinetic",function(){a._clearSelfAndDescendantCache(c)}),this.on("listeningChange.kinetic",function(){a._clearSelfAndDescendantCache(i)}),this.on("opacityChange.kinetic",function(){a._clearSelfAndDescendantCache(t)})},_clearCache:function(t){t?delete this._cache[t]:this._cache={}},_getCache:function(t,e){return void 0===this._cache[t]&&(this._cache[t]=e.call(this)),this._cache[t]},_clearSelfAndDescendantCache:function(t){this._clearCache(t),this.children&&this.getChildren().each(function(e){e._clearSelfAndDescendantCache(t)})},clearCache:function(){return delete this._cache.canvas,this._filterUpToDate=!1,this},cache:function(t){var e=t||{},i=e.x||0,n=e.y||0,a=e.width||this.width(),r=e.height||this.height(),s=e.drawBorder||!1;if(0!==a&&0!==r){var o=new Kinetic.SceneCanvas({pixelRatio:1,width:a,height:r}),c=new Kinetic.SceneCanvas({pixelRatio:1,width:a,height:r}),h=new Kinetic.HitCanvas({width:a,height:r}),l=o.getContext(),d=h.getContext();return h.isCache=!0,this.clearCache(),l.save(),d.save(),s&&(l.save(),l.beginPath(),l.rect(0,0,a,r),l.closePath(),l.setAttr("strokeStyle","red"),l.setAttr("lineWidth",5),l.stroke(),l.restore()),l.translate(-1*i,-1*n),d.translate(-1*i,-1*n),"Shape"===this.nodeType&&(l.translate(-1*this.x(),-1*this.y()),d.translate(-1*this.x(),-1*this.y())),this.drawScene(o,this),this.drawHit(h,this),l.restore(),d.restore(),this._cache.canvas={scene:o,filter:c,hit:h},this}Kinetic.Util.warn("Width or height of caching configuration equals 0. Cache is ignored.")},_drawCachedSceneCanvas:function(t){t.save(),this.getLayer()._applyTransform(this,t),t._applyOpacity(this),t.drawImage(this._getCachedSceneCanvas()._canvas,0,0),t.restore()},_getCachedSceneCanvas:function(){var t,e,i,n=this.filters(),a=this._cache.canvas,r=a.scene,s=a.filter,o=s.getContext();if(n){if(!this._filterUpToDate){try{for(t=n.length,o.clear(),o.drawImage(r._canvas,0,0),e=o.getImageData(0,0,s.getWidth(),s.getHeight()),i=0;t>i;i++)n[i].call(this,e),o.putImageData(e,0,0)}catch(t){Kinetic.Util.warn("Unable to apply filter. "+t.message)}this._filterUpToDate=!0}return s}return r},_drawCachedHitCanvas:function(t){var e=this._cache.canvas.hit;t.save(),this.getLayer()._applyTransform(this,t),t.drawImage(e._canvas,0,0),t.restore()},on:function(t,e){var i,n,a,r,s=t.split(" "),o=s.length;for(i=0;o>i;i++)a=(n=s[i].split("."))[0],r=n[1]||"",this.eventListeners[a]||(this.eventListeners[a]=[]),this.eventListeners[a].push({name:r,handler:e});return this},off:function(t){var e,i,n,a,r,s=(t||"").split(" "),o=s.length;if(!t)for(i in this.eventListeners)this._off(i);for(e=0;o>e;e++)if(a=(n=s[e].split("."))[0],r=n[1],a)this.eventListeners[a]&&this._off(a,r);else for(i in this.eventListeners)this._off(i,r);return this},dispatchEvent:function(t){var e={target:this,type:t.type,evt:t};this.fire(t.type,e)},addEventListener:function(t,e){this.on(t,function(t){e.call(this,t.evt)})},removeEventListener:function(t){this.off(t)},remove:function(){var n=this.getParent();return n&&n.children&&(n.children.splice(this.index,1),n._setChildrenIndices(),delete this.parent),this._clearSelfAndDescendantCache(s),this._clearSelfAndDescendantCache(e),this._clearSelfAndDescendantCache(c),this._clearSelfAndDescendantCache(i),this._clearSelfAndDescendantCache(t),this},destroy:function(){Kinetic._removeId(this.getId()),Kinetic._removeName(this.getName(),this._id),this.remove()},getAttr:function(t){var e="get"+Kinetic.Util._capitalize(t);return Kinetic.Util._isFunction(this[e])?this[e]():this.attrs[t]},getAncestors:function(){for(var t=this.getParent(),e=new Kinetic.Collection;t;)e.push(t),t=t.getParent();return e},getAttrs:function(){return this.attrs||{}},setAttrs:function(t){var e,i;if(t)for(e in t)"children"===e||t[e]instanceof Kinetic.Node||(i="set"+Kinetic.Util._capitalize(e),Kinetic.Util._isFunction(this[i])?this[i](t[e]):this._setAttr(e,t[e]));return this},isListening:function(){return this._getCache(i,this._isListening)},_isListening:function(){var t=this.getListening(),e=this.getParent();return"inherit"===t?!e||e.isListening():t},isVisible:function(){return this._getCache(c,this._isVisible)},_isVisible:function(){var t=this.getVisible(),e=this.getParent();return"inherit"===t?!e||e.isVisible():t},shouldDrawHit:function(t){var e=this.getLayer();return t&&t.isCache||e&&e.hitGraphEnabled()&&this.isListening()&&this.isVisible()},show:function(){return this.setVisible(!0),this},hide:function(){return this.setVisible(!1),this},getZIndex:function(){return this.index||0},getAbsoluteZIndex:function(){var t,e,i,n,a=this.getDepth(),s=this,o=0;return"Stage"!==s.nodeType&&function c(h){for(t=[],e=h.length,i=0;e>i;i++)n=h[i],o++,n.nodeType!==r&&(t=t.concat(n.getChildren().toArray())),n._id===s._id&&(i=e);t.length>0&&t[0].getDepth()<=a&&c(t)}(s.getStage().getChildren()),o},getDepth:function(){for(var t=0,e=this.parent;e;)t++,e=e.parent;return t},setPosition:function(t){return this.setX(t.x),this.setY(t.y),this},getPosition:function(){return{x:this.getX(),y:this.getY()}},getAbsolutePosition:function(){var t=this.getAbsoluteTransform().getMatrix(),e=new Kinetic.Transform,i=this.offset();return e.m=t.slice(),e.translate(i.x,i.y),e.getTranslation()},setAbsolutePosition:function(t){var e,i=this._clearTransform();return this.attrs.x=i.x,this.attrs.y=i.y,delete i.x,delete i.y,(e=this.getAbsoluteTransform()).invert(),e.translate(t.x,t.y),t={x:this.attrs.x+e.getTranslation().x,y:this.attrs.y+e.getTranslation().y},this.setPosition({x:t.x,y:t.y}),this._setTransform(i),this},_setTransform:function(t){var i;for(i in t)this.attrs[i]=t[i];this._clearCache(o),this._clearSelfAndDescendantCache(e)},_clearTransform:function(){var t={x:this.getX(),y:this.getY(),rotation:this.getRotation(),scaleX:this.getScaleX(),scaleY:this.getScaleY(),offsetX:this.getOffsetX(),offsetY:this.getOffsetY(),skewX:this.getSkewX(),skewY:this.getSkewY()};return this.attrs.x=0,this.attrs.y=0,this.attrs.rotation=0,this.attrs.scaleX=1,this.attrs.scaleY=1,this.attrs.offsetX=0,this.attrs.offsetY=0,this.attrs.skewX=0,this.attrs.skewY=0,this._clearCache(o),this._clearSelfAndDescendantCache(e),t},move:function(t){var e=t.x,i=t.y,n=this.getX(),a=this.getY();return void 0!==e&&(n+=e),void 0!==i&&(a+=i),this.setPosition({x:n,y:a}),this},_eachAncestorReverse:function(t,e){var i,n,a=[],r=this.getParent();if(e&&e._id===this._id)return t(this),!0;for(a.unshift(this);r&&(!e||r._id!==e._id);)a.unshift(r),r=r.parent;for(i=a.length,n=0;i>n;n++)t(a[n])},rotate:function(t){return this.setRotation(this.getRotation()+t),this},moveToTop:function(){if(this.parent){var t=this.index;return this.parent.children.splice(t,1),this.parent.children.push(this),this.parent._setChildrenIndices(),!0}Kinetic.Util.warn("Node has no parent. moveToTop function is ignored.")},moveUp:function(){if(this.parent){var t=this.index;return this.parent.getChildren().length-1>t&&(this.parent.children.splice(t,1),this.parent.children.splice(t+1,0,this),this.parent._setChildrenIndices(),!0)}Kinetic.Util.warn("Node has no parent. moveUp function is ignored.")},moveDown:function(){if(this.parent){var t=this.index;return t>0&&(this.parent.children.splice(t,1),this.parent.children.splice(t-1,0,this),this.parent._setChildrenIndices(),!0)}Kinetic.Util.warn("Node has no parent. moveDown function is ignored.")},moveToBottom:function(){if(this.parent){var t=this.index;return t>0&&(this.parent.children.splice(t,1),this.parent.children.unshift(this),this.parent._setChildrenIndices(),!0)}Kinetic.Util.warn("Node has no parent. moveToBottom function is ignored.")},setZIndex:function(t){if(this.parent){var e=this.index;return this.parent.children.splice(e,1),this.parent.children.splice(t,0,this),this.parent._setChildrenIndices(),this}Kinetic.Util.warn("Node has no parent. zIndex parameter is ignored.")},getAbsoluteOpacity:function(){return this._getCache(t,this._getAbsoluteOpacity)},_getAbsoluteOpacity:function(){var t=this.getOpacity();return this.getParent()&&(t*=this.getParent().getAbsoluteOpacity()),t},moveTo:function(t){return this.getParent()!==t&&(this.remove(),t.add(this)),this},toObject:function(){var t,e,i,n,a=Kinetic.Util,r={},s=this.getAttrs();for(t in r.attrs={},s)e=s[t],a._isFunction(e)||a._isElement(e)||a._isObject(e)&&a._hasMethods(e)||(i=this[t],delete s[t],n=i?i.call(this):null,s[t]=e,n!==e&&(r.attrs[t]=e));return r.className=this.getClassName(),r},toJSON:function(){return JSON.stringify(this.toObject())},getParent:function(){return this.parent},getLayer:function(){var t=this.getParent();return t?t.getLayer():null},getStage:function(){return this._getCache(s,this._getStage)},_getStage:function(){var t=this.getParent();return t?t.getStage():void 0},fire:function(t,e,i){return i?this._fireAndBubble(t,e||{}):this._fire(t,e||{}),this},getAbsoluteTransform:function(t){return t?this._getAbsoluteTransform(t):this._getCache(e,this._getAbsoluteTransform)},_getAbsoluteTransform:function(t){var e,i,n=new Kinetic.Transform;return this._eachAncestorReverse(function(t){e=t.transformsEnabled(),i=t.getTransform(),"all"===e?n.multiply(i):"position"===e&&n.translate(t.x(),t.y())},t),n},getTransform:function(){return this._getCache(o,this._getTransform)},_getTransform:function(){var t=new Kinetic.Transform,e=this.getX(),i=this.getY(),n=Kinetic.getAngle(this.getRotation()),a=this.getScaleX(),r=this.getScaleY(),s=this.getSkewX(),o=this.getSkewY(),c=this.getOffsetX(),h=this.getOffsetY();return(0!==e||0!==i)&&t.translate(e,i),0!==n&&t.rotate(n),(0!==s||0!==o)&&t.skew(s,o),(1!==a||1!==r)&&t.scale(a,r),(0!==c||0!==h)&&t.translate(-1*c,-1*h),t},clone:function(t){var e,i,n,a,r,s=this.getClassName(),o=Kinetic.Util.cloneObject(this.attrs);for(var c in h){delete o[h[c]]}for(e in t)o[e]=t[e];var l=new Kinetic[s](o);for(e in this.eventListeners)for(n=(i=this.eventListeners[e]).length,a=0;n>a;a++)(r=i[a]).name.indexOf("kinetic")<0&&(l.eventListeners[e]||(l.eventListeners[e]=[]),l.eventListeners[e].push(r));return l},toDataURL:function(t){var e=(t=t||{}).mimeType||null,i=t.quality||null,n=this.getStage(),a=t.x||0,r=t.y||0,s=new Kinetic.SceneCanvas({width:t.width||this.getWidth()||(n?n.getWidth():0),height:t.height||this.getHeight()||(n?n.getHeight():0),pixelRatio:1}),o=s.getContext();return o.save(),(a||r)&&o.translate(-1*a,-1*r),this.drawScene(s),o.restore(),s.toDataURL(e,i)},toImage:function(t){Kinetic.Util._getImage(this.toDataURL(t),function(e){t.callback(e)})},setSize:function(t){return this.setWidth(t.width),this.setHeight(t.height),this},getSize:function(){return{width:this.getWidth(),height:this.getHeight()}},getWidth:function(){return this.attrs.width||0},getHeight:function(){return this.attrs.height||0},getClassName:function(){return this.className||this.nodeType},getType:function(){return this.nodeType},getDragDistance:function(){return void 0!==this.attrs.dragDistance?this.attrs.dragDistance:this.parent?this.parent.getDragDistance():Kinetic.dragDistance},_get:function(t){return this.className===t||this.nodeType===t?[this]:[]},_off:function(t,e){var i,n,a=this.eventListeners[t];for(i=0;ia;a++)i.add(this._createNode(s[a]));return i},Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Node,"position"),Kinetic.Factory.addGetterSetter(Kinetic.Node,"x",0),Kinetic.Factory.addGetterSetter(Kinetic.Node,"y",0),Kinetic.Factory.addGetterSetter(Kinetic.Node,"opacity",1),Kinetic.Factory.addGetter(Kinetic.Node,"name"),Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Node,"name"),Kinetic.Factory.addGetter(Kinetic.Node,"id"),Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Node,"id"),Kinetic.Factory.addGetterSetter(Kinetic.Node,"rotation",0),Kinetic.Factory.addComponentsGetterSetter(Kinetic.Node,"scale",["x","y"]),Kinetic.Factory.addGetterSetter(Kinetic.Node,"scaleX",1),Kinetic.Factory.addGetterSetter(Kinetic.Node,"scaleY",1),Kinetic.Factory.addComponentsGetterSetter(Kinetic.Node,"skew",["x","y"]),Kinetic.Factory.addGetterSetter(Kinetic.Node,"skewX",0),Kinetic.Factory.addGetterSetter(Kinetic.Node,"skewY",0),Kinetic.Factory.addComponentsGetterSetter(Kinetic.Node,"offset",["x","y"]),Kinetic.Factory.addGetterSetter(Kinetic.Node,"offsetX",0),Kinetic.Factory.addGetterSetter(Kinetic.Node,"offsetY",0),Kinetic.Factory.addSetter(Kinetic.Node,"dragDistance"),Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Node,"dragDistance"),Kinetic.Factory.addSetter(Kinetic.Node,"width",0),Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Node,"width"),Kinetic.Factory.addSetter(Kinetic.Node,"height",0),Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Node,"height"),Kinetic.Factory.addGetterSetter(Kinetic.Node,"listening","inherit"),Kinetic.Factory.addGetterSetter(Kinetic.Node,"filters",void 0,function(t){return this._filterUpToDate=!1,t}),Kinetic.Factory.addGetterSetter(Kinetic.Node,"visible","inherit"),Kinetic.Factory.addGetterSetter(Kinetic.Node,"transformsEnabled","all"),Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Node,"size"),Kinetic.Factory.backCompat(Kinetic.Node,{rotateDeg:"rotate",setRotationDeg:"setRotation",getRotationDeg:"getRotation"}),Kinetic.Collection.mapMethods(Kinetic.Node)}(),Kinetic.Filters.Grayscale=function(t){var e,i,n=t.data,a=n.length;for(e=0;a>e;e+=4)i=.34*n[e]+.5*n[e+1]+.16*n[e+2],n[e]=i,n[e+1]=i,n[e+2]=i},Kinetic.Filters.Brighten=function(t){var e,i=255*this.brightness(),n=t.data,a=n.length;for(e=0;a>e;e+=4)n[e]+=i,n[e+1]+=i,n[e+2]+=i},Kinetic.Factory.addGetterSetter(Kinetic.Node,"brightness",0,null,Kinetic.Factory.afterSetFilter),Kinetic.Filters.Invert=function(t){var e,i=t.data,n=i.length;for(e=0;n>e;e+=4)i[e]=255-i[e],i[e+1]=255-i[e+1],i[e+2]=255-i[e+2]},function(){function t(){this.r=0,this.g=0,this.b=0,this.a=0,this.next=null}function e(e,a){var r,s,o,c,h,l,d,u,f,g,p,v,y,_,K,m,S,w,x,C,b,F,T,P,k=e.data,A=e.width,M=e.height,D=a+a+1,G=A-1,L=M-1,j=a+1,R=j*(j+1)/2,I=new t,N=null,B=I,H=null,O=null,E=i[a],U=n[a];for(o=1;D>o;o++)B=B.next=new t,o==j&&(N=B);for(B.next=I,d=l=0,s=0;M>s;s++){for(m=S=w=x=u=f=g=p=0,v=j*(C=k[l]),y=j*(b=k[l+1]),_=j*(F=k[l+2]),K=j*(T=k[l+3]),u+=R*C,f+=R*b,g+=R*F,p+=R*T,B=I,o=0;j>o;o++)B.r=C,B.g=b,B.b=F,B.a=T,B=B.next;for(o=1;j>o;o++)c=l+((o>G?G:o)<<2),u+=(B.r=C=k[c])*(P=j-o),f+=(B.g=b=k[c+1])*P,g+=(B.b=F=k[c+2])*P,p+=(B.a=T=k[c+3])*P,m+=C,S+=b,w+=F,x+=T,B=B.next;for(H=I,O=N,r=0;A>r;r++)k[l+3]=T=p*E>>U,0!==T?(T=255/T,k[l]=(u*E>>U)*T,k[l+1]=(f*E>>U)*T,k[l+2]=(g*E>>U)*T):k[l]=k[l+1]=k[l+2]=0,u-=v,f-=y,g-=_,p-=K,v-=H.r,y-=H.g,_-=H.b,K-=H.a,c=d+((c=r+a+1)r;r++){for(S=w=x=m=f=g=p=u=0,v=j*(C=k[l=r<<2]),y=j*(b=k[l+1]),_=j*(F=k[l+2]),K=j*(T=k[l+3]),u+=R*C,f+=R*b,g+=R*F,p+=R*T,B=I,o=0;j>o;o++)B.r=C,B.g=b,B.b=F,B.a=T,B=B.next;for(h=A,o=1;a>=o;o++)l=h+r<<2,u+=(B.r=C=k[l])*(P=j-o),f+=(B.g=b=k[l+1])*P,g+=(B.b=F=k[l+2])*P,p+=(B.a=T=k[l+3])*P,m+=C,S+=b,w+=F,x+=T,B=B.next,L>o&&(h+=A);for(l=r,H=I,O=N,s=0;M>s;s++)k[(c=l<<2)+3]=T=p*E>>U,T>0?(T=255/T,k[c]=(u*E>>U)*T,k[c+1]=(f*E>>U)*T,k[c+2]=(g*E>>U)*T):k[c]=k[c+1]=k[c+2]=0,u-=v,f-=y,g-=_,p-=K,v-=H.r,y-=H.g,_-=H.b,K-=H.a,c=r+((c=s+j)0&&e(t,i)},Kinetic.Factory.addGetterSetter(Kinetic.Node,"blurRadius",0,null,Kinetic.Factory.afterSetFilter)}(),function(){function t(t,e,i){var n=4*(i*t.width+e),a=[];return a.push(t.data[n++],t.data[n++],t.data[n++],t.data[n++]),a}function e(t,e){return Math.sqrt(Math.pow(t[0]-e[0],2)+Math.pow(t[1]-e[1],2)+Math.pow(t[2]-e[2],2))}function i(i,n){var a=t(i,0,0),r=t(i,i.width-1,0),s=t(i,0,i.height-1),o=t(i,i.width-1,i.height-1),c=n||10;if(e(a,r)u?0:255}return l}}Kinetic.Filters.Mask=function(t){var e=i(t,this.threshold());return e&&function(t,e){for(var i=0;io;o++)for(var c=0;e>c;c++){for(var h=o*e+c,l=0,d=0;a>d;d++)for(var u=0;a>u;u++){var f=o+d-r,g=c+u-r;if(f>=0&&i>f&&g>=0&&e>g){var p=n[d*a+u];l+=t[f*e+g]*p}}s[h]=l}return s}(e=function(t,e,i){for(var n=[1,1,1,1,1,1,1,1,1],a=Math.round(Math.sqrt(n.length)),r=Math.floor(a/2),s=[],o=0;i>o;o++)for(var c=0;e>c;c++){for(var h=o*e+c,l=0,d=0;a>d;d++)for(var u=0;a>u;u++){var f=o+d-r,g=c+u-r;if(f>=0&&i>f&&g>=0&&e>g){var p=n[d*a+u];l+=t[f*e+g]*p}}s[h]=l>=1020?255:0}return s}(e=function(t,e,i){for(var n=[1,1,1,1,0,1,1,1,1],a=Math.round(Math.sqrt(n.length)),r=Math.floor(a/2),s=[],o=0;i>o;o++)for(var c=0;e>c;c++){for(var h=o*e+c,l=0,d=0;a>d;d++)for(var u=0;a>u;u++){var f=o+d-r,g=c+u-r;if(f>=0&&i>f&&g>=0&&e>g){var p=n[d*a+u];l+=t[f*e+g]*p}}s[h]=2040===l?255:0}return s}(e,t.width,t.height),t.width,t.height),t.width,t.height)),t},Kinetic.Factory.addGetterSetter(Kinetic.Node,"threshold",0,null,Kinetic.Factory.afterSetFilter)}(),Kinetic.Filters.RGB=function(t){var e,i,n=t.data,a=n.length,r=this.red(),s=this.green(),o=this.blue();for(e=0;a>e;e+=4)i=(.34*n[e]+.5*n[e+1]+.16*n[e+2])/255,n[e]=i*r,n[e+1]=i*s,n[e+2]=i*o,n[e+3]=n[e+3]},Kinetic.Factory.addGetterSetter(Kinetic.Node,"red",0,function(t){return this._filterUpToDate=!1,t>255?255:0>t?0:Math.round(t)}),Kinetic.Factory.addGetterSetter(Kinetic.Node,"green",0,function(t){return this._filterUpToDate=!1,t>255?255:0>t?0:Math.round(t)}),Kinetic.Factory.addGetterSetter(Kinetic.Node,"blue",0,Kinetic.Validators.RGBComponent,Kinetic.Factory.afterSetFilter),Kinetic.Filters.HSV=function(t){var e,i,n,a,r,s=t.data,o=s.length,c=Math.pow(2,this.value()),h=Math.pow(2,this.saturation()),l=Math.abs(this.hue()+360)%360,d=c*h*Math.cos(l*Math.PI/180),u=c*h*Math.sin(l*Math.PI/180),f=.299*c+.701*d+.167*u,g=.587*c-.587*d+.33*u,p=.114*c-.114*d-.497*u,v=.299*c-.299*d-.328*u,y=.587*c+.413*d+.035*u,_=.114*c-.114*d+.293*u,K=.299*c-.3*d+1.25*u,m=.587*c-.586*d-1.05*u,S=.114*c+.886*d-.2*u;for(e=0;o>e;e+=4)i=s[e+0],n=s[e+1],a=s[e+2],r=s[e+3],s[e+0]=f*i+g*n+p*a,s[e+1]=v*i+y*n+_*a,s[e+2]=K*i+m*n+S*a,s[e+3]=r},Kinetic.Factory.addGetterSetter(Kinetic.Node,"hue",0,null,Kinetic.Factory.afterSetFilter),Kinetic.Factory.addGetterSetter(Kinetic.Node,"saturation",0,null,Kinetic.Factory.afterSetFilter),Kinetic.Factory.addGetterSetter(Kinetic.Node,"value",0,null,Kinetic.Factory.afterSetFilter),Kinetic.Factory.addGetterSetter(Kinetic.Node,"hue",0,null,Kinetic.Factory.afterSetFilter),Kinetic.Factory.addGetterSetter(Kinetic.Node,"saturation",0,null,Kinetic.Factory.afterSetFilter),Kinetic.Factory.addGetterSetter(Kinetic.Node,"luminance",0,null,Kinetic.Factory.afterSetFilter),Kinetic.Filters.HSL=function(t){var e,i,n,a,r,s=t.data,o=s.length,c=Math.pow(2,this.saturation()),h=Math.abs(this.hue()+360)%360,l=127*this.luminance(),d=1*c*Math.cos(h*Math.PI/180),u=1*c*Math.sin(h*Math.PI/180),f=.299+.701*d+.167*u,g=.587-.587*d+.33*u,p=.114-.114*d-.497*u,v=.299-.299*d-.328*u,y=.587+.413*d+.035*u,_=.114-.114*d+.293*u,K=.299-.3*d+1.25*u,m=.587-.586*d-1.05*u,S=.114+.886*d-.2*u;for(e=0;o>e;e+=4)i=s[e+0],n=s[e+1],a=s[e+2],r=s[e+3],s[e+0]=f*i+g*n+p*a+l,s[e+1]=v*i+y*n+_*a+l,s[e+2]=K*i+m*n+S*a+l,s[e+3]=r},Kinetic.Filters.Emboss=function(t){var e=10*this.embossStrength(),i=255*this.embossWhiteLevel(),n=this.embossDirection(),a=this.embossBlend(),r=0,s=0,o=t.data,c=t.width,h=t.height,l=4*c,d=h;switch(n){case"top-left":r=-1,s=-1;break;case"top":r=-1,s=0;break;case"top-right":r=-1,s=1;break;case"right":r=0,s=1;break;case"bottom-right":r=1,s=1;break;case"bottom":r=1,s=0;break;case"bottom-left":r=1,s=-1;break;case"left":r=0,s=-1}do{var u=(d-1)*l,f=r;1>d+f&&(f=0),d+f>h&&(f=0);var g=(d-1+f)*c*4,p=c;do{var v=u+4*(p-1),y=s;1>p+y&&(y=0),p+y>c&&(y=0);var _=g+4*(p-1+y),K=o[v]-o[_],m=o[v+1]-o[_+1],S=o[v+2]-o[_+2],w=K,x=w>0?w:-w;if((m>0?m:-m)>x&&(w=m),(S>0?S:-S)>x&&(w=S),w*=e,a){var C=o[v]+w,b=o[v+1]+w,F=o[v+2]+w;o[v]=C>255?255:0>C?0:C,o[v+1]=b>255?255:0>b?0:b,o[v+2]=F>255?255:0>F?0:F}else{var T=i-w;0>T?T=0:T>255&&(T=255),o[v]=o[v+1]=o[v+2]=T}}while(--p)}while(--d)},Kinetic.Factory.addGetterSetter(Kinetic.Node,"embossStrength",.5,null,Kinetic.Factory.afterSetFilter),Kinetic.Factory.addGetterSetter(Kinetic.Node,"embossWhiteLevel",.5,null,Kinetic.Factory.afterSetFilter),Kinetic.Factory.addGetterSetter(Kinetic.Node,"embossDirection","top-left",null,Kinetic.Factory.afterSetFilter),Kinetic.Factory.addGetterSetter(Kinetic.Node,"embossBlend",!1,null,Kinetic.Factory.afterSetFilter),function(){function t(t,e,i,n,a){var r=i-e,s=a-n;return 0===r?n+s/2:0===s?n:s*((t-e)/r)+n}Kinetic.Filters.Enhance=function(e){var i,n,a,r,s=e.data,o=s.length,c=s[0],h=c,l=s[1],d=l,u=s[2],f=u,g=this.enhance();if(0!==g){for(r=0;o>r;r+=4)c>(i=s[r+0])?c=i:i>h&&(h=i),l>(n=s[r+1])?l=n:n>d&&(d=n),u>(a=s[r+2])?u=a:a>f&&(f=a);var p,v,y,_,K,m,S,w,x;for(h===c&&(h=255,c=0),d===l&&(d=255,l=0),f===u&&(f=255,u=0),g>0?(v=h+g*(255-h),y=c-g*(c-0),K=d+g*(255-d),m=l-g*(l-0),w=f+g*(255-f),x=u-g*(u-0)):(v=h+g*(h-(p=.5*(h+c))),y=c+g*(c-p),K=d+g*(d-(_=.5*(d+l))),m=l+g*(l-_),w=f+g*(f-(S=.5*(f+u))),x=u+g*(u-S)),r=0;o>r;r+=4)s[r+0]=t(s[r+0],c,h,y,v),s[r+1]=t(s[r+1],l,d,m,K),s[r+2]=t(s[r+2],u,f,x,w)}},Kinetic.Factory.addGetterSetter(Kinetic.Node,"enhance",0,null,Kinetic.Factory.afterSetFilter)}(),Kinetic.Filters.Posterize=function(t){var e,i=Math.round(254*this.levels())+1,n=t.data,a=n.length,r=255/i;for(e=0;a>e;e+=1)n[e]=Math.floor(n[e]/r)*r},Kinetic.Factory.addGetterSetter(Kinetic.Node,"levels",.5,null,Kinetic.Factory.afterSetFilter),Kinetic.Filters.Noise=function(t){var e,i=255*this.noise(),n=t.data,a=n.length,r=i/2;for(e=0;a>e;e+=4)n[e+0]+=r-2*r*Math.random(),n[e+1]+=r-2*r*Math.random(),n[e+2]+=r-2*r*Math.random()},Kinetic.Factory.addGetterSetter(Kinetic.Node,"noise",.2,null,Kinetic.Factory.afterSetFilter),Kinetic.Filters.Pixelate=function(t){var e,i,n,a,r,s,o,c,h,l,d,u,f,g,p=Math.ceil(this.pixelSize()),v=t.width,y=t.height,_=Math.ceil(v/p),K=Math.ceil(y/p);for(t=t.data,u=0;_>u;u+=1)for(f=0;K>f;f+=1){for(a=0,r=0,s=0,o=0,h=(c=u*p)+p,d=(l=f*p)+p,g=0,e=c;h>e;e+=1)if(!(e>=v))for(i=l;d>i;i+=1)i>=y||(a+=t[0+(n=4*(v*i+e))],r+=t[n+1],s+=t[n+2],o+=t[n+3],g+=1);for(a/=g,r/=g,s/=g,e=c;h>e;e+=1)if(!(e>=v))for(i=l;d>i;i+=1)i>=y||(t[0+(n=4*(v*i+e))]=a,t[n+1]=r,t[n+2]=s,t[n+3]=o)}},Kinetic.Factory.addGetterSetter(Kinetic.Node,"pixelSize",8,null,Kinetic.Factory.afterSetFilter),Kinetic.Filters.Threshold=function(t){var e,i=255*this.threshold(),n=t.data,a=n.length;for(e=0;a>e;e+=1)n[e]=n[e]255?255:o,l[n+1]=c>255?255:c,l[n+2]=h>255?255:h,l[n+3]=l[n+3]}while(--i)}while(--u)},Kinetic.Filters.Solarize=function(t){var e=t.data,i=t.width,n=4*i,a=t.height;do{var r=(a-1)*n,s=i;do{var o=r+4*(s-1),c=e[o],h=e[o+1],l=e[o+2];c>127&&(c=255-c),h>127&&(h=255-h),l>127&&(l=255-l),e[o]=c,e[o+1]=h,e[o+2]=l}while(--s)}while(--a)},function(){var t=Kinetic.Util.createCanvasElement();Kinetic.Filters.Kaleidoscope=function(e){var i,n,a,r,s,o,c,h,l,d=e.width,u=e.height,f=Math.round(this.kaleidoscopePower()),g=Math.round(this.kaleidoscopeAngle()),p=Math.floor(d*(g%360)/360);if(!(1>f)){t.width=d,t.height=u;var v=t.getContext("2d").getImageData(0,0,d,u);!function(t,e,i){var n,a,r,s,o=t.data,c=e.data,h=t.width,l=t.height,d=i.polarCenterX||h/2,u=i.polarCenterY||l/2,f=0,g=0,p=0,v=0,y=Math.sqrt(d*d+u*u);a=h-d,r=l-u,y=(s=Math.sqrt(a*a+r*r))>y?s:y;var _,K,m,S,w=l,x=h,C=360/x*Math.PI/180;for(K=0;x>K;K+=1)for(m=Math.sin(K*C),S=Math.cos(K*C),_=0;w>_;_+=1)a=Math.floor(d+y*_/w*S),f=o[0+(n=4*((r=Math.floor(u+y*_/w*m))*h+a))],g=o[n+1],p=o[n+2],v=o[n+3],c[0+(n=4*(K+_*h))]=f,c[n+1]=g,c[n+2]=p,c[n+3]=v}(e,v,{polarCenterX:d/2,polarCenterY:u/2});for(var y=d/Math.pow(2,f);8>=y;)y*=2,f-=1;var _=y=Math.ceil(y),K=0,m=_,S=1;for(p+y>d&&(K=_,m=0,S=-1),n=0;u>n;n+=1)for(i=K;i!==m;i+=S)h=4*(d*n+Math.round(i+p)%d),r=v.data[h+0],s=v.data[h+1],o=v.data[h+2],c=v.data[h+3],l=4*(d*n+i),v.data[l+0]=r,v.data[l+1]=s,v.data[l+2]=o,v.data[l+3]=c;for(n=0;u>n;n+=1)for(_=Math.floor(y),a=0;f>a;a+=1){for(i=0;_+1>i;i+=1)h=4*(d*n+i),r=v.data[h+0],s=v.data[h+1],o=v.data[h+2],c=v.data[h+3],l=4*(d*n+2*_-i-1),v.data[l+0]=r,v.data[l+1]=s,v.data[l+2]=o,v.data[l+3]=c;_*=2}!function(t,e,i){var n,a,r,s,o,c,h=t.data,l=e.data,d=t.width,u=t.height,f=i.polarCenterX||d/2,g=i.polarCenterY||u/2,p=0,v=0,y=0,_=0,K=Math.sqrt(f*f+g*g);a=d-f,r=u-g,K=(c=Math.sqrt(a*a+r*r))>K?c:K;var m,S,w,x=u,C=d,b=i.polarRotation||0;for(a=0;d>a;a+=1)for(r=0;u>r;r+=1)s=a-f,o=r-g,m=Math.sqrt(s*s+o*o)*x/K,S=(S=(180*Math.atan2(o,s)/Math.PI+360+b)%360)*C/360,w=Math.floor(S),p=h[0+(n=4*(Math.floor(m)*d+w))],v=h[n+1],y=h[n+2],_=h[n+3],l[0+(n=4*(r*d+a))]=p,l[n+1]=v,l[n+2]=y,l[n+3]=_}(v,e,{polarRotation:0})}},Kinetic.Factory.addGetterSetter(Kinetic.Node,"kaleidoscopePower",2,null,Kinetic.Factory.afterSetFilter),Kinetic.Factory.addGetterSetter(Kinetic.Node,"kaleidoscopeAngle",0,null,Kinetic.Factory.afterSetFilter)}(),function(){function t(t){setTimeout(t,1e3/60)}var e=Kinetic.root.performance&&Kinetic.root.performance.now?function(){return Kinetic.root.performance.now()}:function(){return(new Date).getTime()},i=Kinetic.root.requestAnimationFrame||Kinetic.root.webkitRequestAnimationFrame||Kinetic.root.mozRequestAnimationFrame||Kinetic.root.oRequestAnimationFrame||Kinetic.root.msRequestAnimationFrame||t;Kinetic.Animation=function(t,i){var n=Kinetic.Animation;this.func=t,this.setLayers(i),this.id=n.animIdCounter++,this.frame={time:0,timeDiff:0,lastTime:e()}},Kinetic.Animation.prototype={setLayers:function(t){var e;e=t?t.length>0?t:[t]:[],this.layers=e},getLayers:function(){return this.layers},addLayer:function(t){var e,i,n=this.layers;if(n){for(e=n.length,i=0;e>i;i++)if(n[i]._id===t._id)return!1}else this.layers=[];return this.layers.push(t),!0},isRunning:function(){var t,e=Kinetic.Animation.animations,i=e.length;for(t=0;i>t;t++)if(e[t].id===this.id)return!0;return!1},start:function(){var t=Kinetic.Animation;this.stop(),this.frame.timeDiff=0,this.frame.lastTime=e(),t._addAnimation(this)},stop:function(){Kinetic.Animation._removeAnimation(this)},_updateFrameObject:function(t){this.frame.timeDiff=t-this.frame.lastTime,this.frame.lastTime=t,this.frame.time+=this.frame.timeDiff,this.frame.frameRate=1e3/this.frame.timeDiff}},Kinetic.Animation.animations=[],Kinetic.Animation.animIdCounter=0,Kinetic.Animation.animRunning=!1,Kinetic.Animation._addAnimation=function(t){this.animations.push(t),this._handleAnimation()},Kinetic.Animation._removeAnimation=function(t){var e,i=t.id,n=this.animations,a=n.length;for(e=0;a>e;e++)if(n[e].id===i){this.animations.splice(e,1);break}},Kinetic.Animation._runFrames=function(){var t,i,n,a,r,s,o,c,h={},l=this.animations;for(a=0;ar;r++)void 0!==(o=i[r])._id&&(h[o._id]=o);for(c in h)h[c].draw()},Kinetic.Animation._animationLoop=function(){var t=Kinetic.Animation;t.animations.length?(function(){i.apply(Kinetic.root,arguments)}(t._animationLoop),t._runFrames()):t.animRunning=!1},Kinetic.Animation._handleAnimation=function(){this.animRunning||(this.animRunning=!0,this._animationLoop())};var n=Kinetic.Node.prototype.moveTo;Kinetic.Node.prototype.moveTo=function(t){n.call(this,t)},Kinetic.BaseLayer.prototype.batchDraw=function(){var t=this,i=Kinetic.Animation;this.batchAnim||(this.batchAnim=new i(function(){t.lastBatchDrawTime&&e()-t.lastBatchDrawTime>500&&t.batchAnim.stop()},this)),this.lastBatchDrawTime=e(),this.batchAnim.isRunning()||(this.draw(),this.batchAnim.start())},Kinetic.Stage.prototype.batchDraw=function(){this.getChildren().each(function(t){t.batchDraw()})}}(),function(){var t={node:1,duration:1,easing:1,onFinish:1,yoyo:1},e=0;Kinetic.Tween=function(n){var a,r,s=this,o=n.node,c=o._id,h=n.easing||Kinetic.Easings.Linear,l=!!n.yoyo;for(r in a=void 0===n.duration?1:0===n.duration?.001:n.duration,this.node=o,this._id=e++,this.anim=new Kinetic.Animation(function(){s.tween.onEnterFrame()},o.getLayer()||(o instanceof Kinetic.Stage?o.getLayers():null)),this.tween=new i(r,function(t){s._tweenFunc(t)},h,0,1,1e3*a,l),this._addListeners(),Kinetic.Tween.attrs[c]||(Kinetic.Tween.attrs[c]={}),Kinetic.Tween.attrs[c][this._id]||(Kinetic.Tween.attrs[c][this._id]={}),Kinetic.Tween.tweens[c]||(Kinetic.Tween.tweens[c]={}),n)void 0===t[r]&&this._addAttr(r,n[r]);this.reset(),this.onFinish=n.onFinish,this.onReset=n.onReset},Kinetic.Tween.attrs={},Kinetic.Tween.tweens={},Kinetic.Tween.prototype={_addAttr:function(t,e){var i,n,a,r,s,o=this.node,c=o._id;if((a=Kinetic.Tween.tweens[c][t])&&delete Kinetic.Tween.attrs[c][a][t],i=o.getAttr(t),Kinetic.Util._isArray(e))for(n=[],s=e.length,r=0;s>r;r++)n.push(e[r]-i[r]);else n=e-i;Kinetic.Tween.attrs[c][this._id][t]={start:i,diff:n},Kinetic.Tween.tweens[c][t]=this._id},_tweenFunc:function(t){var e,i,n,a,r,s,o,c=this.node,h=Kinetic.Tween.attrs[c._id][this._id];for(e in h){if(n=(i=h[e]).start,a=i.diff,Kinetic.Util._isArray(n))for(r=[],o=n.length,s=0;o>s;s++)r.push(n[s]+a[s]*t);else r=n+a*t;c.setAttr(e,r)}},_addListeners:function(){var t=this;this.tween.onPlay=function(){t.anim.start()},this.tween.onReverse=function(){t.anim.start()},this.tween.onPause=function(){t.anim.stop()},this.tween.onFinish=function(){t.onFinish&&t.onFinish()},this.tween.onReset=function(){t.onReset&&t.onReset()}},play:function(){return this.tween.play(),this},reverse:function(){return this.tween.reverse(),this},reset:function(){return this.tween.reset(),this},seek:function(t){return this.tween.seek(1e3*t),this},pause:function(){return this.tween.pause(),this},finish:function(){return this.tween.finish(),this},destroy:function(){var t,e=this.node._id,i=this._id,n=Kinetic.Tween.tweens[e];for(t in this.pause(),n)delete Kinetic.Tween.tweens[e][t];delete Kinetic.Tween.attrs[e][i]}};var i=function(t,e,i,n,a,r,s){this.prop=t,this.propFunc=e,this.begin=n,this._pos=n,this.duration=r,this._change=0,this.prevPos=0,this.yoyo=s,this._time=0,this._position=0,this._startTime=0,this._finish=0,this.func=i,this._change=a-this.begin,this.pause()};i.prototype={fire:function(t){var e=this[t];e&&e()},setTime:function(t){t>this.duration?this.yoyo?(this._time=this.duration,this.reverse()):this.finish():0>t?this.yoyo?(this._time=0,this.play()):this.reset():(this._time=t,this.update())},getTime:function(){return this._time},setPosition:function(t){this.prevPos=this._pos,this.propFunc(t),this._pos=t},getPosition:function(t){return void 0===t&&(t=this._time),this.func(t,this.begin,this._change,this.duration)},play:function(){this.state=2,this._startTime=this.getTimer()-this._time,this.onEnterFrame(),this.fire("onPlay")},reverse:function(){this.state=3,this._time=this.duration-this._time,this._startTime=this.getTimer()-this._time,this.onEnterFrame(),this.fire("onReverse")},seek:function(t){this.pause(),this._time=t,this.update(),this.fire("onSeek")},reset:function(){this.pause(),this._time=0,this.update(),this.fire("onReset")},finish:function(){this.pause(),this._time=this.duration,this.update(),this.fire("onFinish")},update:function(){this.setPosition(this.getPosition(this._time))},onEnterFrame:function(){var t=this.getTimer()-this._startTime;2===this.state?this.setTime(t):3===this.state&&this.setTime(this.duration-t)},pause:function(){this.state=1,this.fire("onPause")},getTimer:function(){return(new Date).getTime()}},Kinetic.Easings={BackEaseIn:function(t,e,i,n){var a=1.70158;return i*(t/=n)*t*((a+1)*t-a)+e},BackEaseOut:function(t,e,i,n){var a=1.70158;return i*((t=t/n-1)*t*((a+1)*t+a)+1)+e},BackEaseInOut:function(t,e,i,n){var a=1.70158;return(t/=n/2)<1?i/2*t*t*((1+(a*=1.525))*t-a)+e:i/2*((t-=2)*t*((1+(a*=1.525))*t+a)+2)+e},ElasticEaseIn:function(t,e,i,n,a,r){var s=0;return 0===t?e:1==(t/=n)?e+i:(r||(r=.3*n),!a||at?-.5*a*Math.pow(2,10*(t-=1))*Math.sin(2*(t*n-s)*Math.PI/r)+e:a*Math.pow(2,-10*(t-=1))*Math.sin(2*(t*n-s)*Math.PI/r)*.5+i+e)},BounceEaseOut:function(t,e,i,n){return(t/=n)<1/2.75?7.5625*i*t*t+e:2/2.75>t?i*(7.5625*(t-=1.5/2.75)*t+.75)+e:2.5/2.75>t?i*(7.5625*(t-=2.25/2.75)*t+.9375)+e:i*(7.5625*(t-=2.625/2.75)*t+.984375)+e},BounceEaseIn:function(t,e,i,n){return i-Kinetic.Easings.BounceEaseOut(n-t,0,i,n)+e},BounceEaseInOut:function(t,e,i,n){return n/2>t?.5*Kinetic.Easings.BounceEaseIn(2*t,0,i,n)+e:.5*Kinetic.Easings.BounceEaseOut(2*t-n,0,i,n)+.5*i+e},EaseIn:function(t,e,i,n){return i*(t/=n)*t+e},EaseOut:function(t,e,i,n){return-i*(t/=n)*(t-2)+e},EaseInOut:function(t,e,i,n){return(t/=n/2)<1?i/2*t*t+e:-i/2*(--t*(t-2)-1)+e},StrongEaseIn:function(t,e,i,n){return i*(t/=n)*t*t*t*t+e},StrongEaseOut:function(t,e,i,n){return i*((t=t/n-1)*t*t*t*t+1)+e},StrongEaseInOut:function(t,e,i,n){return(t/=n/2)<1?i/2*t*t*t*t*t+e:i/2*((t-=2)*t*t*t*t+2)+e},Linear:function(t,e,i,n){return i*t/n+e}}}(),function(){Kinetic.DD={anim:new Kinetic.Animation(function(){var t=this.dirty;return this.dirty=!1,t}),isDragging:!1,justDragged:!1,offset:{x:0,y:0},node:null,_drag:function(t){var e=Kinetic.DD,i=e.node;if(i){if(!e.isDragging){var n=i.getStage().getPointerPosition();if(i.dragDistance()>Math.max(Math.abs(n.x-e.startPointerPos.x),Math.abs(n.y-e.startPointerPos.y)))return}i._setDragPosition(t),e.isDragging||(e.isDragging=!0,i.fire("dragstart",{type:"dragstart",target:i,evt:t},!0)),i.fire("dragmove",{type:"dragmove",target:i,evt:t},!0)}},_endDragBefore:function(t){var e,i=Kinetic.DD,n=i.node;n&&(n.nodeType,e=n.getLayer(),i.anim.stop(),i.isDragging&&(i.isDragging=!1,i.justDragged=!0,Kinetic.listenClickTap=!1,t&&(t.dragEndNode=n)),delete i.node,(e||n).draw())},_endDragAfter:function(t){var e=(t=t||{}).dragEndNode;t&&e&&e.fire("dragend",{type:"dragend",target:e,evt:t},!0)}},Kinetic.Node.prototype.startDrag=function(){var t=Kinetic.DD,e=this.getStage(),i=this.getLayer(),n=e.getPointerPosition(),a=this.getAbsolutePosition();n&&(t.node&&t.node.stopDrag(),t.node=this,t.startPointerPos=n,t.offset.x=n.x-a.x,t.offset.y=n.y-a.y,t.anim.setLayers(i||this.getLayers()),t.anim.start(),this._setDragPosition())},Kinetic.Node.prototype._setDragPosition=function(t){var e=Kinetic.DD,i=this.getStage().getPointerPosition(),n=this.getDragBoundFunc();if(i){var a={x:i.x-e.offset.x,y:i.y-e.offset.y};void 0!==n&&(a=n.call(this,a,t)),this.setAbsolutePosition(a),this._lastPos&&this._lastPos.x===a.x&&this._lastPos.y===a.y||(e.anim.dirty=!0),this._lastPos=a}},Kinetic.Node.prototype.stopDrag=function(){var t=Kinetic.DD,e={};t._endDragBefore(e),t._endDragAfter(e)},Kinetic.Node.prototype.setDraggable=function(t){this._setAttr("draggable",t),this._dragChange()};var t=Kinetic.Node.prototype.destroy;Kinetic.Node.prototype.destroy=function(){var e=Kinetic.DD;e.node&&e.node._id===this._id&&this.stopDrag(),t.call(this)},Kinetic.Node.prototype.isDragging=function(){var t=Kinetic.DD;return!(!t.node||t.node._id!==this._id||!t.isDragging)},Kinetic.Node.prototype._listenDrag=function(){var t=this;this._dragCleanup(),"Stage"===this.getClassName()?this.on("contentMousedown.kinetic contentTouchstart.kinetic",function(e){Kinetic.DD.node||t.startDrag(e)}):this.on("mousedown.kinetic touchstart.kinetic",function(e){1!==e.evt.button&&2!==e.evt.button&&(Kinetic.DD.node||t.startDrag(e))})},Kinetic.Node.prototype._dragChange=function(){if(this.attrs.draggable)this._listenDrag();else{this._dragCleanup();var t=this.getStage(),e=Kinetic.DD;t&&e.node&&e.node._id===this._id&&e.node.stopDrag()}},Kinetic.Node.prototype._dragCleanup=function(){"Stage"===this.getClassName()?(this.off("contentMousedown.kinetic"),this.off("contentTouchstart.kinetic")):(this.off("mousedown.kinetic"),this.off("touchstart.kinetic"))},Kinetic.Factory.addGetterSetter(Kinetic.Node,"dragBoundFunc"),Kinetic.Factory.addGetter(Kinetic.Node,"draggable",!1),Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Node,"draggable");var e=Kinetic.document.documentElement;e.addEventListener("mouseup",Kinetic.DD._endDragBefore,!0),e.addEventListener("touchend",Kinetic.DD._endDragBefore,!0),e.addEventListener("mouseup",Kinetic.DD._endDragAfter,!1),e.addEventListener("touchend",Kinetic.DD._endDragAfter,!1)}(),Kinetic.Util.addMethods(Kinetic.Container,{__init:function(t){this.children=new Kinetic.Collection,Kinetic.Node.call(this,t)},getChildren:function(t){if(t){var e=new Kinetic.Collection;return this.children.each(function(i){t(i)&&e.push(i)}),e}return this.children},hasChildren:function(){return this.getChildren().length>0},removeChildren:function(){for(var t,e=Kinetic.Collection.toCollection(this.children),i=0;i1){for(var e=0;ee;e++)if("#"===(n=h[e]).charAt(0))(r=this._getNodeById(n.slice(1)))&&c.push(r);else if("."===n.charAt(0))a=this._getNodesByName(n.slice(1)),c=c.concat(a);else for(o=(s=this.getChildren()).length,i=0;o>i;i++)c=c.concat(s[i]._get(n));return Kinetic.Collection.toCollection(c)},_getNodeById:function(t){var e=Kinetic.ids[t];return void 0!==e&&this.isAncestorOf(e)?e:null},_getNodesByName:function(t){var e=Kinetic.names[t]||[];return this._getDescendants(e)},_get:function(t){for(var e=Kinetic.Node.prototype._get.call(this,t),i=this.getChildren(),n=i.length,a=0;n>a;a++)e=e.concat(i[a]._get(t));return e},toObject:function(){var t=Kinetic.Node.prototype.toObject.call(this);t.children=[];for(var e=this.getChildren(),i=e.length,n=0;i>n;n++){var a=e[n];t.children.push(a.toObject())}return t},_getDescendants:function(t){for(var e=[],i=t.length,n=0;i>n;n++){var a=t[n];this.isAncestorOf(a)&&e.push(a)}return e},isAncestorOf:function(t){for(var e=t.getParent();e;){if(e._id===this._id)return!0;e=e.getParent()}return!1},clone:function(t){var e=Kinetic.Node.prototype.clone.call(this,t);return this.getChildren().each(function(t){e.add(t.clone())}),e},getAllIntersections:function(t){var e=[];return this.find("Shape").each(function(i){i.isVisible()&&i.intersects(t)&&e.push(i)}),e},_setChildrenIndices:function(){this.children.each(function(t,e){t.index=e})},drawScene:function(t,e){var i=this.getLayer(),n=t||i&&i.getCanvas(),a=n&&n.getContext(),r=this._cache.canvas,s=r&&r.scene;return this.isVisible()&&(s?this._drawCachedSceneCanvas(a):this._drawChildren(n,"drawScene",e)),this},drawHit:function(t,e){var i=this.getLayer(),n=t||i&&i.hitCanvas,a=n&&n.getContext(),r=this._cache.canvas,s=r&&r.hit;return this.shouldDrawHit(n)&&(i&&i.clearHitCache(),s?this._drawCachedHitCanvas(a):this._drawChildren(n,"drawHit",e)),this},_drawChildren:function(t,e,i){var n,a,r=this.getLayer(),s=t&&t.getContext(),o=this.getClipWidth(),c=this.getClipHeight(),h=o&&c;h&&r&&(n=this.getClipX(),a=this.getClipY(),s.save(),r._applyTransform(this,s),s.beginPath(),s.rect(n,a,o,c),s.clip(),s.reset()),this.children.each(function(n){n[e](t,i)}),h&&s.restore()},shouldDrawHit:function(t){var e=this.getLayer(),i=Kinetic.DD&&Kinetic.isDragging()&&-1!==Kinetic.DD.anim.getLayers().indexOf(e);return t&&t.isCache||e&&e.hitGraphEnabled()&&this.isVisible()&&!i}}),Kinetic.Util.extend(Kinetic.Container,Kinetic.Node),Kinetic.Container.prototype.get=Kinetic.Container.prototype.find,Kinetic.Factory.addComponentsGetterSetter(Kinetic.Container,"clip",["x","y","width","height"]),Kinetic.Factory.addGetterSetter(Kinetic.Container,"clipX"),Kinetic.Factory.addGetterSetter(Kinetic.Container,"clipY"),Kinetic.Factory.addGetterSetter(Kinetic.Container,"clipWidth"),Kinetic.Factory.addGetterSetter(Kinetic.Container,"clipHeight"),Kinetic.Collection.mapMethods(Kinetic.Container),function(){function t(t){t.fill()}function e(t){t.stroke()}function i(t){t.fill()}function n(t){t.stroke()}function a(){this._clearCache(r)}var r="hasShadow";Kinetic.Util.addMethods(Kinetic.Shape,{__init:function(r){this.nodeType="Shape",this._fillFunc=t,this._strokeFunc=e,this._fillFuncHit=i,this._strokeFuncHit=n;for(var s,o=Kinetic.shapes;!(s=Kinetic.Util.getRandomColor())||s in o;);this.colorKey=s,o[s]=this,Kinetic.Node.call(this,r),this.on("shadowColorChange.kinetic shadowBlurChange.kinetic shadowOffsetChange.kinetic shadowOpacityChange.kinetic shadowEnabledChange.kinetic",a)},hasChildren:function(){return!1},getChildren:function(){return[]},getContext:function(){return this.getLayer().getContext()},getCanvas:function(){return this.getLayer().getCanvas()},hasShadow:function(){return this._getCache(r,this._hasShadow)},_hasShadow:function(){return this.getShadowEnabled()&&0!==this.getShadowOpacity()&&!!(this.getShadowColor()||this.getShadowBlur()||this.getShadowOffsetX()||this.getShadowOffsetY())},hasFill:function(){return!!(this.getFill()||this.getFillPatternImage()||this.getFillLinearGradientColorStops()||this.getFillRadialGradientColorStops())},hasStroke:function(){return!!(this.stroke()||this.strokeRed()||this.strokeGreen()||this.strokeBlue())},intersects:function(t){var e=this.getStage().bufferHitCanvas;return e.getContext().clear(),this.drawScene(e),e.context.getImageData(Math.round(t.x),Math.round(t.y),1,1).data[3]>0},destroy:function(){Kinetic.Node.prototype.destroy.call(this),delete Kinetic.shapes[this.colorKey]},_useBufferCanvas:function(){return(this.hasShadow()||1!==this.getAbsoluteOpacity())&&this.hasFill()&&this.hasStroke()&&this.getStage()},drawScene:function(t,e){var i,n,a=this.getLayer(),r=t||a.getCanvas(),s=r.getContext(),o=this._cache.canvas,c=this.sceneFunc(),h=this.hasShadow();if(this.isVisible())if(o)this._drawCachedSceneCanvas(s);else if(c){if(s.save(),this._useBufferCanvas()){if((n=(i=this.getStage().bufferCanvas).getContext()).clear(),n.save(),n._applyLineJoin(this),a)a._applyTransform(this,n,e);else{var l=this.getAbsoluteTransform(e).getMatrix();s.transform(l[0],l[1],l[2],l[3],l[4],l[5])}c.call(this,n),n.restore(),h&&!r.hitCanvas&&(s.save(),s._applyShadow(this),s.drawImage(i._canvas,0,0),s.restore()),s._applyOpacity(this),s.drawImage(i._canvas,0,0)}else{if(s._applyLineJoin(this),a)a._applyTransform(this,s,e);else{var d=this.getAbsoluteTransform(e).getMatrix();s.transform(d[0],d[1],d[2],d[3],d[4],d[5])}h&&!r.hitCanvas&&(s.save(),s._applyShadow(this),c.call(this,s),s.restore()),s._applyOpacity(this),c.call(this,s)}s.restore()}return this},drawHit:function(t,e){var i=this.getLayer(),n=t||i.hitCanvas,a=n.getContext(),r=this.hitFunc()||this.sceneFunc(),s=this._cache.canvas,o=s&&s.hit;if(this.shouldDrawHit(n))if(i&&i.clearHitCache(),o)this._drawCachedHitCanvas(a);else if(r){if(a.save(),a._applyLineJoin(this),i)i._applyTransform(this,a,e);else{var c=this.getAbsoluteTransform(e).getMatrix();a.transform(c[0],c[1],c[2],c[3],c[4],c[5])}r.call(this,a),a.restore()}return this},drawHitFromCache:function(t){var e,i,n,a,r,s,o=t||0,c=this._cache.canvas,h=this._getCachedSceneCanvas(),l=h.getContext(),d=c.hit.getContext(),u=h.getWidth(),f=h.getHeight();d.clear();try{for(e=l.getImageData(0,0,u,f).data,n=(i=d.getImageData(0,0,u,f)).data,a=e.length,r=Kinetic.Util._hexToRgb(this.colorKey),s=0;a>s;s+=4)e[s+3]>o&&(n[s]=r.r,n[s+1]=r.g,n[s+2]=r.b,n[s+3]=255);d.putImageData(i,0,0)}catch(t){Kinetic.Util.warn("Unable to draw hit graph from cached scene canvas. "+t.message)}return this}}),Kinetic.Util.extend(Kinetic.Shape,Kinetic.Node),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"stroke"),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"strokeRed",0,Kinetic.Validators.RGBComponent),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"strokeGreen",0,Kinetic.Validators.RGBComponent),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"strokeBlue",0,Kinetic.Validators.RGBComponent),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"strokeAlpha",1,Kinetic.Validators.alphaComponent),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"strokeWidth",2),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"lineJoin"),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"lineCap"),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"sceneFunc"),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"hitFunc"),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"dash"),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowColor"),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowRed",0,Kinetic.Validators.RGBComponent),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowGreen",0,Kinetic.Validators.RGBComponent),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowBlue",0,Kinetic.Validators.RGBComponent),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowAlpha",1,Kinetic.Validators.alphaComponent),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowBlur"),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowOpacity"),Kinetic.Factory.addComponentsGetterSetter(Kinetic.Shape,"shadowOffset",["x","y"]),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowOffsetX",0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowOffsetY",0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPatternImage"),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fill"),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillRed",0,Kinetic.Validators.RGBComponent),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillGreen",0,Kinetic.Validators.RGBComponent),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillBlue",0,Kinetic.Validators.RGBComponent),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillAlpha",1,Kinetic.Validators.alphaComponent),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPatternX",0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPatternY",0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillLinearGradientColorStops"),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillRadialGradientStartRadius",0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillRadialGradientEndRadius",0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillRadialGradientColorStops"),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPatternRepeat","repeat"),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillEnabled",!0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"strokeEnabled",!0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowEnabled",!0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"dashEnabled",!0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"strokeScaleEnabled",!0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPriority","color"),Kinetic.Factory.addComponentsGetterSetter(Kinetic.Shape,"fillPatternOffset",["x","y"]),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPatternOffsetX",0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPatternOffsetY",0),Kinetic.Factory.addComponentsGetterSetter(Kinetic.Shape,"fillPatternScale",["x","y"]),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPatternScaleX",1),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPatternScaleY",1),Kinetic.Factory.addComponentsGetterSetter(Kinetic.Shape,"fillLinearGradientStartPoint",["x","y"]),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillLinearGradientStartPointX",0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillLinearGradientStartPointY",0),Kinetic.Factory.addComponentsGetterSetter(Kinetic.Shape,"fillLinearGradientEndPoint",["x","y"]),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillLinearGradientEndPointX",0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillLinearGradientEndPointY",0),Kinetic.Factory.addComponentsGetterSetter(Kinetic.Shape,"fillRadialGradientStartPoint",["x","y"]),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillRadialGradientStartPointX",0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillRadialGradientStartPointY",0),Kinetic.Factory.addComponentsGetterSetter(Kinetic.Shape,"fillRadialGradientEndPoint",["x","y"]),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillRadialGradientEndPointX",0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillRadialGradientEndPointY",0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPatternRotation",0),Kinetic.Factory.backCompat(Kinetic.Shape,{dashArray:"dash",getDashArray:"getDash",setDashArray:"getDash",drawFunc:"sceneFunc",getDrawFunc:"getSceneFunc",setDrawFunc:"setSceneFunc",drawHitFunc:"hitFunc",getDrawHitFunc:"getHitFunc",setDrawHitFunc:"setHitFunc"}),Kinetic.Collection.mapMethods(Kinetic.Shape)}(),function(){function t(t,e){t.content.addEventListener(e,function(i){t[u+e](i)},!1)}var e="mouseout",i="mouseleave",n="mouseover",a="mousemove",r="mousedown",s="mouseup",o="touchstart",c="touchend",h="touchmove",l="mousewheel",d="div",u="_",f=[r,a,s,e,o,h,c,n,"DOMMouseScroll",l,"wheel"],g=f.length;Kinetic.Util.addMethods(Kinetic.Stage,{___init:function(t){this.nodeType="Stage",Kinetic.Container.call(this,t),this._id=Kinetic.idCounter++,this._buildDOM(),this._bindContentEvents(),this._enableNestedTransforms=!1,Kinetic.stages.push(this)},_validateAdd:function(t){"Layer"!==t.getType()&&Kinetic.Util.error("You may only add layers to the stage.")},setContainer:function(t){if("string"==typeof t){var e=t;if(!(t=Kinetic.document.getElementById(t)))throw"Can not find container in document with id "+e}return this._setAttr("container",t),this},shouldDrawHit:function(){return!0},draw:function(){return Kinetic.Node.prototype.draw.call(this),this},setHeight:function(t){return Kinetic.Node.prototype.setHeight.call(this,t),this._resizeDOM(),this},setWidth:function(t){return Kinetic.Node.prototype.setWidth.call(this,t),this._resizeDOM(),this},clear:function(){var t,e=this.children,i=e.length;for(t=0;i>t;t++)e[t].clear();return this},clone:function(t){return t||(t={}),t.container=Kinetic.document.createElement(d),Kinetic.Container.prototype.clone.call(this,t)},destroy:function(){var t=this.content;Kinetic.Container.prototype.destroy.call(this),t&&Kinetic.Util._isInDocument(t)&&this.getContainer().removeChild(t);var e=Kinetic.stages.indexOf(this);e>-1&&Kinetic.stages.splice(e,1)},getPointerPosition:function(){return this.pointerPos},getStage:function(){return this},getContent:function(){return this.content},toDataURL:function(t){var e=(t=t||{}).mimeType||null,i=t.quality||null,n=t.x||0,a=t.y||0,r=new Kinetic.SceneCanvas({width:t.width||this.getWidth(),height:t.height||this.getHeight(),pixelRatio:1}),s=r.getContext()._context,o=this.children;(n||a)&&s.translate(-1*n,-1*a),function n(a){var c=o[a].toDataURL(),h=new Kinetic.window.Image;h.onload=function(){s.drawImage(h,0,0),a=0;e--)if(i=n[e].getIntersection(t))return i;return null},_resizeDOM:function(){if(this.content){var t,e,i=this.getWidth(),n=this.getHeight(),a=this.getChildren(),r=a.length;for(this.content.style.width=i+"px",this.content.style.height=n+"px",this.bufferCanvas.setSize(i,n),this.bufferHitCanvas.setSize(i,n),t=0;r>t;t++)(e=a[t]).setSize(i,n),e.draw()}},add:function(t){if(!(arguments.length>1))return Kinetic.Container.prototype.add.call(this,t),t._setCanvasSize(this.width(),this.height()),t.draw(),this.content.appendChild(t.canvas._canvas),this;for(var e=0;ee;e++)t(this,f[e])},_mouseover:function(t){Kinetic.UA.mobile||(this._setPointerPosition(t),this._fire("contentMouseover",{evt:t}))},_mouseout:function(t){if(!Kinetic.UA.mobile){this._setPointerPosition(t);var n=this.targetShape;n&&!Kinetic.isDragging()&&(n._fireAndBubble(e,{evt:t}),n._fireAndBubble(i,{evt:t}),this.targetShape=null),this.pointerPos=void 0,this._fire("contentMouseout",{evt:t})}},_mousemove:function(t){if(Kinetic.UA.ieMobile)return this._touchmove(t);if((void 0===t.webkitMovementX&&void 0===t.webkitMovementY||0!==t.webkitMovementY||0!==t.webkitMovementX)&&!Kinetic.UA.mobile){this._setPointerPosition(t);var r,s=Kinetic.DD;Kinetic.isDragging()||((r=this.getIntersection(this.getPointerPosition()))&&r.isListening()?Kinetic.isDragging()||this.targetShape&&this.targetShape._id===r._id?r._fireAndBubble(a,{evt:t}):(this.targetShape&&(this.targetShape._fireAndBubble(e,{evt:t},r),this.targetShape._fireAndBubble(i,{evt:t},r)),r._fireAndBubble(n,{evt:t},this.targetShape),r._fireAndBubble("mouseenter",{evt:t},this.targetShape),this.targetShape=r):this.targetShape&&!Kinetic.isDragging()&&(this.targetShape._fireAndBubble(e,{evt:t}),this.targetShape._fireAndBubble(i,{evt:t}),this.targetShape=null),this._fire("contentMousemove",{evt:t})),s&&s._drag(t),t.preventDefault&&t.preventDefault()}},_mousedown:function(t){if(Kinetic.UA.ieMobile)return this._touchstart(t);if(!Kinetic.UA.mobile){this._setPointerPosition(t);var e=this.getIntersection(this.getPointerPosition());Kinetic.listenClickTap=!0,e&&e.isListening()&&(this.clickStartShape=e,e._fireAndBubble(r,{evt:t})),this._fire("contentMousedown",{evt:t})}t.preventDefault&&t.preventDefault()},_mouseup:function(t){if(Kinetic.UA.ieMobile)return this._touchend(t);if(!Kinetic.UA.mobile){this._setPointerPosition(t);var e=this.getIntersection(this.getPointerPosition()),i=this.clickStartShape,n=!1,a=Kinetic.DD;Kinetic.inDblClickWindow?(n=!0,Kinetic.inDblClickWindow=!1):a&&a.justDragged?a&&(a.justDragged=!1):Kinetic.inDblClickWindow=!0,setTimeout(function(){Kinetic.inDblClickWindow=!1},Kinetic.dblClickWindow),e&&e.isListening()&&(e._fireAndBubble(s,{evt:t}),Kinetic.listenClickTap&&i&&i._id===e._id&&(e._fireAndBubble("click",{evt:t}),n&&e._fireAndBubble("dblclick",{evt:t}))),this._fire("contentMouseup",{evt:t}),Kinetic.listenClickTap&&(this._fire("contentClick",{evt:t}),n&&this._fire("contentDblclick",{evt:t})),Kinetic.listenClickTap=!1}t.preventDefault&&t.preventDefault()},_touchstart:function(t){this._setPointerPosition(t);var e=this.getIntersection(this.getPointerPosition());Kinetic.listenClickTap=!0,e&&e.isListening()&&(this.tapStartShape=e,e._fireAndBubble(o,{evt:t}),e.isListening()&&t.preventDefault&&t.preventDefault()),this._fire("contentTouchstart",{evt:t})},_touchend:function(t){this._setPointerPosition(t);var e=this.getIntersection(this.getPointerPosition()),i=!1;Kinetic.inDblClickWindow?(i=!0,Kinetic.inDblClickWindow=!1):Kinetic.inDblClickWindow=!0,setTimeout(function(){Kinetic.inDblClickWindow=!1},Kinetic.dblClickWindow),e&&e.isListening()&&(e._fireAndBubble(c,{evt:t}),Kinetic.listenClickTap&&e._id===this.tapStartShape._id&&(e._fireAndBubble("tap",{evt:t}),i&&e._fireAndBubble("dbltap",{evt:t})),e.isListening()&&t.preventDefault&&t.preventDefault()),Kinetic.listenClickTap&&(this._fire("contentTouchend",{evt:t}),i&&this._fire("contentDbltap",{evt:t})),Kinetic.listenClickTap=!1},_touchmove:function(t){this._setPointerPosition(t);var e,i=Kinetic.DD;Kinetic.isDragging()||((e=this.getIntersection(this.getPointerPosition()))&&e.isListening()&&(e._fireAndBubble(h,{evt:t}),e.isListening()&&t.preventDefault&&t.preventDefault()),this._fire("contentTouchmove",{evt:t})),i&&(i._drag(t),Kinetic.isDragging()&&t.preventDefault())},_DOMMouseScroll:function(t){this._mousewheel(t)},_mousewheel:function(t){this._setPointerPosition(t);var e=this.getIntersection(this.getPointerPosition());e&&e.isListening()&&e._fireAndBubble(l,{evt:t})},_wheel:function(t){this._mousewheel(t)},_setPointerPosition:function(t){var e,i=this._getContentPosition(),n=t.offsetX,a=t.clientX,r=null,s=null;void 0!==(t=t||window.event).touches?t.touches.length>0&&(r=(e=t.touches[0]).clientX-i.left,s=e.clientY-i.top):void 0!==n?(r=n,s=t.offsetY):"mozilla"===Kinetic.UA.browser?(r=t.layerX,s=t.layerY):void 0!==a&&i&&(r=a-i.left,s=t.clientY-i.top),null!==r&&null!==s&&(this.pointerPos={x:r,y:s})},_getContentPosition:function(){var t=this.content.getBoundingClientRect?this.content.getBoundingClientRect():{top:0,left:0};return{top:t.top,left:t.left}},_buildDOM:function(){var t=this.getContainer();if(!t){if(Kinetic.Util.isBrowser())throw"Stage has no container. A container is required.";t=Kinetic.document.createElement(d)}t.innerHTML="",this.content=Kinetic.document.createElement(d),this.content.style.position="relative",this.content.style.display="inline-block",this.content.className="kineticjs-content",this.content.setAttribute("role","presentation"),t.appendChild(this.content),this.bufferCanvas=new Kinetic.SceneCanvas({pixelRatio:1}),this.bufferHitCanvas=new Kinetic.HitCanvas,this._resizeDOM()},_onContent:function(t,e){var i,n,a=t.split(" "),r=a.length;for(i=0;r>i;i++)n=a[i],this.content.addEventListener(n,e,!1)},cache:function(){Kinetic.Util.warn("Cache function is not allowed for stage. You may use cache only for layers, groups and shapes.")},clearCache:function(){}}),Kinetic.Util.extend(Kinetic.Stage,Kinetic.Container),Kinetic.Factory.addGetter(Kinetic.Stage,"container"),Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Stage,"container")}(),Kinetic.Util.addMethods(Kinetic.BaseLayer,{___init:function(t){this.nodeType="Layer",Kinetic.Container.call(this,t)},createPNGStream:function(){return this.canvas._canvas.createPNGStream()},getCanvas:function(){return this.canvas},getHitCanvas:function(){return this.hitCanvas},getContext:function(){return this.getCanvas().getContext()},clear:function(t){return this.getContext().clear(t),this.getHitCanvas().getContext().clear(t),this},clearHitCache:function(){this._hitImageData=void 0},setZIndex:function(t){Kinetic.Node.prototype.setZIndex.call(this,t);var e=this.getStage();return e&&(e.content.removeChild(this.getCanvas()._canvas),ta;a++){if(r=t[a],s=(n=this._getIntersection({x:i.x+r.x*o,y:i.y+r.y*o})).shape)return s;n.antialiased&&(c=!0)}if(!c)return;o+=1}},_getImageData:function(t,e){var i=this.hitCanvas.width||1,n=this.hitCanvas.height||1,a=Math.round(e)*i+Math.round(t);return this._hitImageData||(this._hitImageData=this.hitCanvas.context.getImageData(0,0,i,n)),[this._hitImageData.data[4*a+0],this._hitImageData.data[4*a+1],this._hitImageData.data[4*a+2],this._hitImageData.data[4*a+3]]},_getIntersection:function(t){var e,i=this.hitCanvas.context.getImageData(t.x,t.y,1,1).data,n=i[3];return 255===n?(e=Kinetic.Util._rgbToHex(i[0],i[1],i[2]),{shape:Kinetic.shapes["#"+e]}):n>0?{antialiased:!0}:{}},drawScene:function(t,e){var i=this.getLayer(),n=t||i&&i.getCanvas();return this._fire("beforeDraw",{node:this}),this.getClearBeforeDraw()&&n.getContext().clear(),Kinetic.Container.prototype.drawScene.call(this,n,e),this._fire("draw",{node:this}),this},_applyTransform:function(t,e,i){var n=t.getAbsoluteTransform(i).getMatrix();e.transform(n[0],n[1],n[2],n[3],n[4],n[5])},drawHit:function(t,e){var i=this.getLayer(),n=t||i&&i.hitCanvas;return i&&i.getClearBeforeDraw()&&i.getHitCanvas().getContext().clear(),Kinetic.Container.prototype.drawHit.call(this,n,e),this.imageData=null,this},clear:function(t){return this.getContext().clear(t),this.getHitCanvas().getContext().clear(t),this.imageData=null,this},setVisible:function(t){return Kinetic.Node.prototype.setVisible.call(this,t),t?(this.getCanvas()._canvas.style.display="block",this.hitCanvas._canvas.style.display="block"):(this.getCanvas()._canvas.style.display="none",this.hitCanvas._canvas.style.display="none"),this},enableHitGraph:function(){return this.setHitGraphEnabled(!0),this},disableHitGraph:function(){return this.setHitGraphEnabled(!1),this},setSize:function(t,e){Kinetic.BaseLayer.prototype.setSize.call(this,t,e),this.hitCanvas.setSize(t,e)}}),Kinetic.Util.extend(Kinetic.Layer,Kinetic.BaseLayer),Kinetic.Factory.addGetterSetter(Kinetic.Layer,"hitGraphEnabled",!0),Kinetic.Collection.mapMethods(Kinetic.Layer)}(),Kinetic.Util.addMethods(Kinetic.FastLayer,{____init:function(t){this.nodeType="Layer",this.canvas=new Kinetic.SceneCanvas,Kinetic.BaseLayer.call(this,t)},_validateAdd:function(t){"Shape"!==t.getType()&&Kinetic.Util.error("You may only add shapes to a fast layer.")},_setCanvasSize:function(t,e){this.canvas.setSize(t,e)},hitGraphEnabled:function(){return!1},getIntersection:function(){return null},drawScene:function(t){var e=this.getLayer(),i=t||e&&e.getCanvas();return this.getClearBeforeDraw()&&i.getContext().clear(),Kinetic.Container.prototype.drawScene.call(this,i),this},_applyTransform:function(t,e,i){if(!i||i._id!==this._id){var n=t.getTransform().getMatrix();e.transform(n[0],n[1],n[2],n[3],n[4],n[5])}},draw:function(){return this.drawScene(),this},clear:function(t){return this.getContext().clear(t),this},setVisible:function(t){return Kinetic.Node.prototype.setVisible.call(this,t),this.getCanvas()._canvas.style.display=t?"block":"none",this}}),Kinetic.Util.extend(Kinetic.FastLayer,Kinetic.BaseLayer),Kinetic.Collection.mapMethods(Kinetic.FastLayer),Kinetic.Util.addMethods(Kinetic.Group,{___init:function(t){this.nodeType="Group",Kinetic.Container.call(this,t)},_validateAdd:function(t){var e=t.getType();"Group"!==e&&"Shape"!==e&&Kinetic.Util.error("You may only add groups and shapes to groups.")}}),Kinetic.Util.extend(Kinetic.Group,Kinetic.Container),Kinetic.Collection.mapMethods(Kinetic.Group),Kinetic.Rect=function(t){this.___init(t)},Kinetic.Rect.prototype={___init:function(t){Kinetic.Shape.call(this,t),this.className="Rect",this.sceneFunc(this._sceneFunc)},_sceneFunc:function(t){var e=this.getCornerRadius(),i=this.getWidth(),n=this.getHeight();t.beginPath(),e?(t.moveTo(e,0),t.lineTo(i-e,0),t.arc(i-e,e,e,3*Math.PI/2,0,!1),t.lineTo(i,n-e),t.arc(i-e,n-e,e,0,Math.PI/2,!1),t.lineTo(e,n),t.arc(e,n-e,e,Math.PI/2,Math.PI,!1),t.lineTo(0,e),t.arc(e,e,e,Math.PI,3*Math.PI/2,!1)):t.rect(0,0,i,n),t.closePath(),t.fillStrokeShape(this)}},Kinetic.Util.extend(Kinetic.Rect,Kinetic.Shape),Kinetic.Factory.addGetterSetter(Kinetic.Rect,"cornerRadius",0),Kinetic.Collection.mapMethods(Kinetic.Rect),function(){var t=2*Math.PI-1e-4;Kinetic.Circle=function(t){this.___init(t)},Kinetic.Circle.prototype={___init:function(t){Kinetic.Shape.call(this,t),this.className="Circle",this.sceneFunc(this._sceneFunc)},_sceneFunc:function(e){e.beginPath(),e.arc(0,0,this.getRadius(),0,t,!1),e.closePath(),e.fillStrokeShape(this)},getWidth:function(){return 2*this.getRadius()},getHeight:function(){return 2*this.getRadius()},setWidth:function(t){Kinetic.Node.prototype.setWidth.call(this,t),this.radius()!==t/2&&this.setRadius(t/2)},setHeight:function(t){Kinetic.Node.prototype.setHeight.call(this,t),this.radius()!==t/2&&this.setRadius(t/2)},setRadius:function(t){this._setAttr("radius",t),this.setWidth(2*t),this.setHeight(2*t)}},Kinetic.Util.extend(Kinetic.Circle,Kinetic.Shape),Kinetic.Factory.addGetter(Kinetic.Circle,"radius",0),Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Circle,"radius"),Kinetic.Collection.mapMethods(Kinetic.Circle)}(),function(){var t=2*Math.PI-1e-4;Kinetic.Ellipse=function(t){this.___init(t)},Kinetic.Ellipse.prototype={___init:function(t){Kinetic.Shape.call(this,t),this.className="Ellipse",this.sceneFunc(this._sceneFunc)},_sceneFunc:function(e){var i=this.getRadiusX(),n=this.getRadiusY();e.beginPath(),e.save(),i!==n&&e.scale(1,n/i),e.arc(0,0,i,0,t,!1),e.restore(),e.closePath(),e.fillStrokeShape(this)},getWidth:function(){return 2*this.getRadiusX()},getHeight:function(){return 2*this.getRadiusY()},setWidth:function(t){Kinetic.Node.prototype.setWidth.call(this,t),this.setRadius({x:t/2})},setHeight:function(t){Kinetic.Node.prototype.setHeight.call(this,t),this.setRadius({y:t/2})}},Kinetic.Util.extend(Kinetic.Ellipse,Kinetic.Shape),Kinetic.Factory.addComponentsGetterSetter(Kinetic.Ellipse,"radius",["x","y"]),Kinetic.Factory.addGetterSetter(Kinetic.Ellipse,"radiusX",0),Kinetic.Factory.addGetterSetter(Kinetic.Ellipse,"radiusY",0),Kinetic.Collection.mapMethods(Kinetic.Ellipse)}(),function(){var t=2*Math.PI-1e-4;Kinetic.Ring=function(t){this.___init(t)},Kinetic.Ring.prototype={___init:function(t){Kinetic.Shape.call(this,t),this.className="Ring",this.sceneFunc(this._sceneFunc)},_sceneFunc:function(e){e.beginPath(),e.arc(0,0,this.getInnerRadius(),0,t,!1),e.moveTo(this.getOuterRadius(),0),e.arc(0,0,this.getOuterRadius(),t,0,!0),e.closePath(),e.fillStrokeShape(this)},getWidth:function(){return 2*this.getOuterRadius()},getHeight:function(){return 2*this.getOuterRadius()},setWidth:function(t){Kinetic.Node.prototype.setWidth.call(this,t),this.outerRadius()!==t/2&&this.setOuterRadius(t/2)},setHeight:function(t){Kinetic.Node.prototype.setHeight.call(this,t),this.outerRadius()!==t/2&&this.setOuterRadius(t/2)},setOuterRadius:function(t){this._setAttr("outerRadius",t),this.setWidth(2*t),this.setHeight(2*t)}},Kinetic.Util.extend(Kinetic.Ring,Kinetic.Shape),Kinetic.Factory.addGetterSetter(Kinetic.Ring,"innerRadius",0),Kinetic.Factory.addGetter(Kinetic.Ring,"outerRadius",0),Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Ring,"outerRadius"),Kinetic.Collection.mapMethods(Kinetic.Ring)}(),Kinetic.Wedge=function(t){this.___init(t)},Kinetic.Wedge.prototype={___init:function(t){Kinetic.Shape.call(this,t),this.className="Wedge",this.sceneFunc(this._sceneFunc)},_sceneFunc:function(t){t.beginPath(),t.arc(0,0,this.getRadius(),0,Kinetic.getAngle(this.getAngle()),this.getClockwise()),t.lineTo(0,0),t.closePath(),t.fillStrokeShape(this)}},Kinetic.Util.extend(Kinetic.Wedge,Kinetic.Shape),Kinetic.Factory.addGetterSetter(Kinetic.Wedge,"radius",0),Kinetic.Factory.addGetterSetter(Kinetic.Wedge,"angle",0),Kinetic.Factory.addGetterSetter(Kinetic.Wedge,"clockwise",!1),Kinetic.Factory.backCompat(Kinetic.Wedge,{angleDeg:"angle",getAngleDeg:"getAngle",setAngleDeg:"setAngle"}),Kinetic.Collection.mapMethods(Kinetic.Wedge),Kinetic.Arc=function(t){this.___init(t)},Kinetic.Arc.prototype={___init:function(t){Kinetic.Shape.call(this,t),this.className="Arc",this.sceneFunc(this._sceneFunc)},_sceneFunc:function(t){var e=Kinetic.getAngle(this.angle()),i=this.clockwise();t.beginPath(),t.arc(0,0,this.getOuterRadius(),0,e,i),t.arc(0,0,this.getInnerRadius(),e,0,!i),t.closePath(),t.fillStrokeShape(this)}},Kinetic.Util.extend(Kinetic.Arc,Kinetic.Shape),Kinetic.Factory.addGetterSetter(Kinetic.Arc,"innerRadius",0),Kinetic.Factory.addGetterSetter(Kinetic.Arc,"outerRadius",0),Kinetic.Factory.addGetterSetter(Kinetic.Arc,"angle",0),Kinetic.Factory.addGetterSetter(Kinetic.Arc,"clockwise",!1),Kinetic.Collection.mapMethods(Kinetic.Arc),Kinetic.Image=function(t){this.___init(t)},Kinetic.Image.prototype={___init:function(t){Kinetic.Shape.call(this,t),this.className="Image",this.sceneFunc(this._sceneFunc),this.hitFunc(this._hitFunc)},_useBufferCanvas:function(){return(this.hasShadow()||1!==this.getAbsoluteOpacity())&&this.hasStroke()&&this.getStage()},_sceneFunc:function(t){var e,i,n,a=this.getWidth(),r=this.getHeight(),s=this.getImage();s&&(e=this.getCropWidth(),i=this.getCropHeight(),n=e&&i?[s,this.getCropX(),this.getCropY(),e,i,0,0,a,r]:[s,0,0,a,r]),(this.hasFill()||this.hasStroke()||this.hasShadow())&&(t.beginPath(),t.rect(0,0,a,r),t.closePath(),t.fillStrokeShape(this)),s&&t.drawImage.apply(t,n)},_hitFunc:function(t){var e=this.getWidth(),i=this.getHeight();t.beginPath(),t.rect(0,0,e,i),t.closePath(),t.fillStrokeShape(this)},getWidth:function(){var t=this.getImage();return this.attrs.width||(t?t.width:0)},getHeight:function(){var t=this.getImage();return this.attrs.height||(t?t.height:0)}},Kinetic.Util.extend(Kinetic.Image,Kinetic.Shape),Kinetic.Factory.addGetterSetter(Kinetic.Image,"image"),Kinetic.Factory.addComponentsGetterSetter(Kinetic.Image,"crop",["x","y","width","height"]),Kinetic.Factory.addGetterSetter(Kinetic.Image,"cropX",0),Kinetic.Factory.addGetterSetter(Kinetic.Image,"cropY",0),Kinetic.Factory.addGetterSetter(Kinetic.Image,"cropWidth",0),Kinetic.Factory.addGetterSetter(Kinetic.Image,"cropHeight",0),Kinetic.Collection.mapMethods(Kinetic.Image),function(){function t(t){t.fillText(this.partialText,0,0)}function e(t){t.strokeText(this.partialText,0,0)}var i="auto",n="left",a="normal",r=["fontFamily","fontSize","fontStyle","fontVariant","padding","align","lineHeight","text","width","height","wrap"],s=r.length,o=Kinetic.Util.createCanvasElement().getContext("2d");Kinetic.Text=function(t){this.___init(t)},Kinetic.Text.prototype={___init:function(n){(n=n||{}).fill=n.fill||"black",void 0===n.width&&(n.width=i),void 0===n.height&&(n.height=i),Kinetic.Shape.call(this,n),this._fillFunc=t,this._strokeFunc=e,this.className="Text";for(var a=0;s>a;a++)this.on(r[a]+"Change.kinetic",this._setTextData);this._setTextData(),this.sceneFunc(this._sceneFunc),this.hitFunc(this._hitFunc)},_sceneFunc:function(t){var e,i=this.getPadding(),a=this.getTextHeight(),r=this.getLineHeight()*a,s=this.textArr,o=s.length,c=this.getWidth();for(t.setAttr("font",this._getContextFont()),t.setAttr("textBaseline","middle"),t.setAttr("textAlign",n),t.save(),t.translate(i,0),t.translate(0,i+a/2),e=0;o>e;e++){var h=s[e],l=h.text,d=h.width;t.save(),"right"===this.getAlign()?t.translate(c-d-2*i,0):"center"===this.getAlign()&&t.translate((c-d-2*i)/2,0),this.partialText=l,t.fillStrokeShape(this),t.restore(),t.translate(0,r)}t.restore()},_hitFunc:function(t){var e=this.getWidth(),i=this.getHeight();t.beginPath(),t.rect(0,0,e,i),t.closePath(),t.fillStrokeShape(this)},setText:function(t){var e=Kinetic.Util._isString(t)?t:t.toString();return this._setAttr("text",e),this},getWidth:function(){return this.attrs.width===i?this.getTextWidth()+2*this.getPadding():this.attrs.width},getHeight:function(){return this.attrs.height===i?this.getTextHeight()*this.textArr.length*this.getLineHeight()+2*this.getPadding():this.attrs.height},getTextWidth:function(){return this.textWidth},getTextHeight:function(){return this.textHeight},_getTextSize:function(t){var e,i=o,n=this.getFontSize();return i.save(),i.font=this._getContextFont(),e=i.measureText(t),i.restore(),{width:e.width,height:parseInt(n,10)}},_getContextFont:function(){return this.getFontStyle()+" "+this.getFontVariant()+" "+this.getFontSize()+"px "+this.getFontFamily()},_addTextLine:function(t,e){return this.textArr.push({text:t,width:e})},_getTextWidth:function(t){return o.measureText(t).width},_setTextData:function(){var t=this.getText().split("\n"),e=+this.getFontSize(),n=0,a=this.getLineHeight()*e,r=this.attrs.width,s=this.attrs.height,c=r!==i,h=s!==i,l=this.getPadding(),d=r-2*l,u=s-2*l,f=0,g=this.getWrap(),p="none"!==g,v="char"!==g&&p;this.textArr=[],o.save(),o.font=this._getContextFont();for(var y=0,_=t.length;_>y;++y){var K=t[y],m=this._getTextWidth(K);if(c&&m>d)for(;K.length>0;){for(var S=0,w=K.length,x="",C=0;w>S;){var b=S+w>>>1,F=K.slice(0,b+1),T=this._getTextWidth(F);d>=T?(S=b+1,x=F,C=T):w=b}if(!x)break;if(v){var P=Math.max(x.lastIndexOf(" "),x.lastIndexOf("-"))+1;P>0&&(S=P,x=x.slice(0,S),C=this._getTextWidth(x))}if(this._addTextLine(x,C),n=Math.max(n,C),f+=a,!p||h&&f+a>u)break;if((K=K.slice(S)).length>0&&d>=(m=this._getTextWidth(K))){this._addTextLine(K,m),f+=a,n=Math.max(n,m);break}}else this._addTextLine(K,m),f+=a,n=Math.max(n,m);if(h&&f+a>u)break}o.restore(),this.textHeight=e,this.textWidth=n}},Kinetic.Util.extend(Kinetic.Text,Kinetic.Shape),Kinetic.Factory.addGetterSetter(Kinetic.Text,"fontFamily","Arial"),Kinetic.Factory.addGetterSetter(Kinetic.Text,"fontSize",12),Kinetic.Factory.addGetterSetter(Kinetic.Text,"fontStyle",a),Kinetic.Factory.addGetterSetter(Kinetic.Text,"fontVariant",a),Kinetic.Factory.addGetterSetter(Kinetic.Text,"padding",0),Kinetic.Factory.addGetterSetter(Kinetic.Text,"align",n),Kinetic.Factory.addGetterSetter(Kinetic.Text,"lineHeight",1),Kinetic.Factory.addGetterSetter(Kinetic.Text,"wrap","word"),Kinetic.Factory.addGetter(Kinetic.Text,"text",""),Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Text,"text"),Kinetic.Collection.mapMethods(Kinetic.Text)}(),Kinetic.Line=function(t){this.___init(t)},Kinetic.Line.prototype={___init:function(t){Kinetic.Shape.call(this,t),this.className="Line",this.on("pointsChange.kinetic tensionChange.kinetic closedChange.kinetic",function(){this._clearCache("tensionPoints")}),this.sceneFunc(this._sceneFunc)},_sceneFunc:function(t){var e,i,n,a=this.getPoints(),r=a.length,s=this.getTension(),o=this.getClosed();if(r){if(t.beginPath(),t.moveTo(a[0],a[1]),0!==s&&r>4){for(i=(e=this.getTensionPoints()).length,n=o?0:4,o||t.quadraticCurveTo(e[0],e[1],e[2],e[3]);i-2>n;)t.bezierCurveTo(e[n++],e[n++],e[n++],e[n++],e[n++],e[n++]);o||t.quadraticCurveTo(e[i-2],e[i-1],a[r-2],a[r-1])}else for(n=2;r>n;n+=2)t.lineTo(a[n],a[n+1]);o?(t.closePath(),t.fillStrokeShape(this)):t.strokeShape(this)}},getTensionPoints:function(){return this._getCache("tensionPoints",this._getTensionPoints)},_getTensionPoints:function(){return this.getClosed()?this._getTensionPointsClosed():Kinetic.Util._expandPoints(this.getPoints(),this.getTension())},_getTensionPointsClosed:function(){var t=this.getPoints(),e=t.length,i=this.getTension(),n=Kinetic.Util,a=n._getControlPoints(t[e-2],t[e-1],t[0],t[1],t[2],t[3],i),r=n._getControlPoints(t[e-4],t[e-3],t[e-2],t[e-1],t[0],t[1],i),s=Kinetic.Util._expandPoints(t,i);return[a[2],a[3]].concat(s).concat([r[0],r[1],t[e-2],t[e-1],r[2],r[3],a[0],a[1],t[0],t[1]])}},Kinetic.Util.extend(Kinetic.Line,Kinetic.Shape),Kinetic.Factory.addGetterSetter(Kinetic.Line,"closed",!1),Kinetic.Factory.addGetterSetter(Kinetic.Line,"tension",0),Kinetic.Factory.addGetterSetter(Kinetic.Line,"points",[]),Kinetic.Collection.mapMethods(Kinetic.Line),Kinetic.Sprite=function(t){this.___init(t)},Kinetic.Sprite.prototype={___init:function(t){Kinetic.Shape.call(this,t),this.className="Sprite",this._updated=!0;var e=this;this.anim=new Kinetic.Animation(function(){var t=e._updated;return e._updated=!1,t}),this.on("animationChange.kinetic",function(){this.frameIndex(0)}),this.on("frameIndexChange.kinetic",function(){this._updated=!0}),this.on("frameRateChange.kinetic",function(){this.anim.isRunning()&&(clearInterval(this.interval),this._setInterval())}),this.sceneFunc(this._sceneFunc),this.hitFunc(this._hitFunc)},_sceneFunc:function(t){var e=this.getAnimation(),i=this.frameIndex(),n=4*i,a=this.getAnimations()[e],r=this.frameOffsets(),s=a[n+0],o=a[n+1],c=a[n+2],h=a[n+3],l=this.getImage();if(l)if(r){var d=r[e],u=2*i;t.drawImage(l,s,o,c,h,d[u+0],d[u+1],c,h)}else t.drawImage(l,s,o,c,h,0,0,c,h)},_hitFunc:function(t){var e=this.getAnimation(),i=this.frameIndex(),n=4*i,a=this.getAnimations()[e],r=this.frameOffsets(),s=a[n+2],o=a[n+3];if(t.beginPath(),r){var c=r[e],h=2*i;t.rect(c[h+0],c[h+1],s,o)}else t.rect(0,0,s,o);t.closePath(),t.fillShape(this)},_useBufferCanvas:function(){return(this.hasShadow()||1!==this.getAbsoluteOpacity())&&this.hasStroke()},_setInterval:function(){var t=this;this.interval=setInterval(function(){t._updateIndex()},1e3/this.getFrameRate())},start:function(){var t=this.getLayer();this.anim.setLayers(t),this._setInterval(),this.anim.start()},stop:function(){this.anim.stop(),clearInterval(this.interval)},isRunning:function(){return this.anim.isRunning()},_updateIndex:function(){var t=this.frameIndex(),e=this.getAnimation(),i=this.getAnimations()[e].length/4;this.frameIndex(i-1>t?t+1:0)}},Kinetic.Util.extend(Kinetic.Sprite,Kinetic.Shape),Kinetic.Factory.addGetterSetter(Kinetic.Sprite,"animation"),Kinetic.Factory.addGetterSetter(Kinetic.Sprite,"animations"),Kinetic.Factory.addGetterSetter(Kinetic.Sprite,"frameOffsets"),Kinetic.Factory.addGetterSetter(Kinetic.Sprite,"image"),Kinetic.Factory.addGetterSetter(Kinetic.Sprite,"frameIndex",0),Kinetic.Factory.addGetterSetter(Kinetic.Sprite,"frameRate",17),Kinetic.Factory.backCompat(Kinetic.Sprite,{index:"frameIndex",getIndex:"getFrameIndex",setIndex:"setFrameIndex"}),Kinetic.Collection.mapMethods(Kinetic.Sprite),Kinetic.Path=function(t){this.___init(t)},Kinetic.Path.prototype={___init:function(t){this.dataArray=[];var e=this;Kinetic.Shape.call(this,t),this.className="Path",this.dataArray=Kinetic.Path.parsePathData(this.getData()),this.on("dataChange.kinetic",function(){e.dataArray=Kinetic.Path.parsePathData(this.getData())}),this.sceneFunc(this._sceneFunc)},_sceneFunc:function(t){var e=this.dataArray,i=!1;t.beginPath();for(var n=0;nh?c:h,p=c>h?1:c/h,v=c>h?h/c:1;t.translate(s,o),t.rotate(u),t.scale(p,v),t.arc(0,0,g,l,l+d,1-f),t.scale(1/p,1/v),t.rotate(-u),t.translate(-s,-o);break;case"z":t.closePath(),i=!0}}i?t.fillStrokeShape(this):t.strokeShape(this)}},Kinetic.Util.extend(Kinetic.Path,Kinetic.Shape),Kinetic.Path.getLineLength=function(t,e,i,n){return Math.sqrt((i-t)*(i-t)+(n-e)*(n-e))},Kinetic.Path.getPointOnLine=function(t,e,i,n,a,r,s){void 0===r&&(r=e),void 0===s&&(s=i);var o=(a-i)/(n-e+1e-8),c=Math.sqrt(t*t/(1+o*o));e>n&&(c*=-1);var h,l=o*c;if(n===e)h={x:r,y:s+l};else if((s-i)/(r-e+1e-8)===o)h={x:r+c,y:s+l};else{var d,u,f=this.getLineLength(e,i,n,a);if(1e-8>f)return;var g=(r-e)*(n-e)+(s-i)*(a-i);d=e+(g/=f*f)*(n-e),u=i+g*(a-i);var p=this.getLineLength(r,s,d,u),v=Math.sqrt(t*t-p*p);c=Math.sqrt(v*v/(1+o*o)),e>n&&(c*=-1),h={x:d+c,y:u+(l=o*c)}}return h},Kinetic.Path.getPointOnCubicBezier=function(t,e,i,n,a,r,s,o,c){function h(t){return t*t*t}function l(t){return 3*t*t*(1-t)}function d(t){return 3*t*(1-t)*(1-t)}function u(t){return(1-t)*(1-t)*(1-t)}return{x:o*h(t)+r*l(t)+n*d(t)+e*u(t),y:c*h(t)+s*l(t)+a*d(t)+i*u(t)}},Kinetic.Path.getPointOnQuadraticBezier=function(t,e,i,n,a,r,s){function o(t){return t*t}function c(t){return 2*t*(1-t)}function h(t){return(1-t)*(1-t)}return{x:r*o(t)+n*c(t)+e*h(t),y:s*o(t)+a*c(t)+i*h(t)}},Kinetic.Path.getPointOnEllipticalArc=function(t,e,i,n,a,r){var s=Math.cos(r),o=Math.sin(r),c=i*Math.cos(a),h=n*Math.sin(a);return{x:t+(c*s-h*o),y:e+(c*o+h*s)}},Kinetic.Path.parsePathData=function(t){if(!t)return[];var e=t,i=["m","M","l","L","v","V","h","H","z","Z","c","C","q","Q","t","T","s","S","a","A"];e=e.replace(new RegExp(" ","g"),",");for(var n=0;n0&&""===l[0]&&l.shift();for(var d=0;d0&&!isNaN(l[0]);){var u,f,g,p,v,y,_,K,m,S,w=null,x=[],C=s,b=o;switch(h){case"l":s+=l.shift(),o+=l.shift(),w="L",x.push(s,o);break;case"L":s=l.shift(),o=l.shift(),x.push(s,o);break;case"m":var F=l.shift(),T=l.shift();if(s+=F,o+=T,w="M",r.length>2&&"z"===r[r.length-1].command)for(var P=r.length-2;P>=0;P--)if("M"===r[P].command){s=r[P].points[0]+F,o=r[P].points[1]+T;break}x.push(s,o),h="l";break;case"M":s=l.shift(),o=l.shift(),w="M",x.push(s,o),h="L";break;case"h":s+=l.shift(),w="L",x.push(s,o);break;case"H":s=l.shift(),w="L",x.push(s,o);break;case"v":o+=l.shift(),w="L",x.push(s,o);break;case"V":o=l.shift(),w="L",x.push(s,o);break;case"C":x.push(l.shift(),l.shift(),l.shift(),l.shift()),s=l.shift(),o=l.shift(),x.push(s,o);break;case"c":x.push(s+l.shift(),o+l.shift(),s+l.shift(),o+l.shift()),s+=l.shift(),o+=l.shift(),w="C",x.push(s,o);break;case"S":f=s,g=o,"C"===(u=r[r.length-1]).command&&(f=s+(s-u.points[2]),g=o+(o-u.points[3])),x.push(f,g,l.shift(),l.shift()),s=l.shift(),o=l.shift(),w="C",x.push(s,o);break;case"s":f=s,g=o,"C"===(u=r[r.length-1]).command&&(f=s+(s-u.points[2]),g=o+(o-u.points[3])),x.push(f,g,s+l.shift(),o+l.shift()),s+=l.shift(),o+=l.shift(),w="C",x.push(s,o);break;case"Q":x.push(l.shift(),l.shift()),s=l.shift(),o=l.shift(),x.push(s,o);break;case"q":x.push(s+l.shift(),o+l.shift()),s+=l.shift(),o+=l.shift(),w="Q",x.push(s,o);break;case"T":f=s,g=o,"Q"===(u=r[r.length-1]).command&&(f=s+(s-u.points[0]),g=o+(o-u.points[1])),s=l.shift(),o=l.shift(),w="Q",x.push(f,g,s,o);break;case"t":f=s,g=o,"Q"===(u=r[r.length-1]).command&&(f=s+(s-u.points[0]),g=o+(o-u.points[1])),s+=l.shift(),o+=l.shift(),w="Q",x.push(f,g,s,o);break;case"A":p=l.shift(),v=l.shift(),y=l.shift(),_=l.shift(),K=l.shift(),m=s,S=o,s=l.shift(),o=l.shift(),w="A",x=this.convertEndpointToCenterParameterization(m,S,s,o,_,K,p,v,y);break;case"a":p=l.shift(),v=l.shift(),y=l.shift(),_=l.shift(),K=l.shift(),m=s,S=o,s+=l.shift(),o+=l.shift(),w="A",x=this.convertEndpointToCenterParameterization(m,S,s,o,_,K,p,v,y)}r.push({command:w||h,points:x,start:{x:C,y:b},pathLength:this.calcLength(C,b,w||h,x)})}("z"===h||"Z"===h)&&r.push({command:"z",points:[],start:void 0,pathLength:0})}return r},Kinetic.Path.calcLength=function(t,e,i,n){var a,r,s,o,c=Kinetic.Path;switch(i){case"L":return c.getLineLength(t,e,n[0],n[1]);case"C":for(a=0,r=c.getPointOnCubicBezier(0,t,e,n[0],n[1],n[2],n[3],n[4],n[5]),o=.01;1>=o;o+=.01)s=c.getPointOnCubicBezier(o,t,e,n[0],n[1],n[2],n[3],n[4],n[5]),a+=c.getLineLength(r.x,r.y,s.x,s.y),r=s;return a;case"Q":for(a=0,r=c.getPointOnQuadraticBezier(0,t,e,n[0],n[1],n[2],n[3]),o=.01;1>=o;o+=.01)s=c.getPointOnQuadraticBezier(o,t,e,n[0],n[1],n[2],n[3]),a+=c.getLineLength(r.x,r.y,s.x,s.y),r=s;return a;case"A":a=0;var h=n[4],l=n[5],d=n[4]+l,u=Math.PI/180;if(Math.abs(h-d)l)for(o=h-u;o>d;o-=u)s=c.getPointOnEllipticalArc(n[0],n[1],n[2],n[3],o,0),a+=c.getLineLength(r.x,r.y,s.x,s.y),r=s;else for(o=h+u;d>o;o+=u)s=c.getPointOnEllipticalArc(n[0],n[1],n[2],n[3],o,0),a+=c.getLineLength(r.x,r.y,s.x,s.y),r=s;return s=c.getPointOnEllipticalArc(n[0],n[1],n[2],n[3],d,0),a+c.getLineLength(r.x,r.y,s.x,s.y)}return 0},Kinetic.Path.convertEndpointToCenterParameterization=function(t,e,i,n,a,r,s,o,c){var h=c*(Math.PI/180),l=Math.cos(h)*(t-i)/2+Math.sin(h)*(e-n)/2,d=-1*Math.sin(h)*(t-i)/2+Math.cos(h)*(e-n)/2,u=l*l/(s*s)+d*d/(o*o);u>1&&(s*=Math.sqrt(u),o*=Math.sqrt(u));var f=Math.sqrt((s*s*o*o-s*s*d*d-o*o*l*l)/(s*s*d*d+o*o*l*l));a===r&&(f*=-1),isNaN(f)&&(f=0);var g=f*s*d/o,p=f*-o*l/s,v=(t+i)/2+Math.cos(h)*g-Math.sin(h)*p,y=(e+n)/2+Math.sin(h)*g+Math.cos(h)*p,_=function(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])},K=function(t,e){return(t[0]*e[0]+t[1]*e[1])/(_(t)*_(e))},m=function(t,e){return(t[0]*e[1]=1&&(C=0),0===r&&C>0&&(C-=2*Math.PI),1===r&&0>C&&(C+=2*Math.PI),[v,y,s,o,S,C,h,r]},Kinetic.Factory.addGetterSetter(Kinetic.Path,"data"),Kinetic.Collection.mapMethods(Kinetic.Path),function(){function t(t){t.fillText(this.partialText,0,0)}function e(t){t.strokeText(this.partialText,0,0)}var i="normal";Kinetic.TextPath=function(t){this.___init(t)},Kinetic.TextPath.prototype={___init:function(i){var n=this;this.dummyCanvas=Kinetic.Util.createCanvasElement(),this.dataArray=[],Kinetic.Shape.call(this,i),this._fillFunc=t,this._strokeFunc=e,this._fillFuncHit=t,this._strokeFuncHit=e,this.className="TextPath",this.dataArray=Kinetic.Path.parsePathData(this.attrs.data),this.on("dataChange.kinetic",function(){n.dataArray=Kinetic.Path.parsePathData(this.attrs.data)}),this.on("textChange.kinetic textStroke.kinetic textStrokeWidth.kinetic",n._setTextData),n._setTextData(),this.sceneFunc(this._sceneFunc)},_sceneFunc:function(t){t.setAttr("font",this._getContextFont()),t.setAttr("textBaseline","middle"),t.setAttr("textAlign","left"),t.save();for(var e=this.glyphInfo,i=0;i0)return s=n,e[n];"M"==e[n].command&&(i={x:e[n].points[0],y:e[n].points[1]})}return{}},h=function(e){var r=t._getTextSize(e).width,s=0,h=0;for(n=void 0;Math.abs(r-s)/r>.01&&25>h;){h++;for(var l=s;void 0===a;)(a=c())&&l+a.pathLengthr?n=Kinetic.Path.getPointOnLine(r,i.x,i.y,a.points[0],a.points[1],i.x,i.y):a=void 0;break;case"A":var u=a.points[4],f=a.points[5],g=a.points[4]+f;0===o?o=u+1e-8:r>s?o+=Math.PI/180*f/Math.abs(f):o-=Math.PI/360*f/Math.abs(f),(0>f&&g>o||f>=0&&o>g)&&(o=g,d=!0),n=Kinetic.Path.getPointOnEllipticalArc(a.points[0],a.points[1],a.points[2],a.points[3],o,a.points[6]);break;case"C":0===o?o=r>a.pathLength?1e-8:r/a.pathLength:r>s?o+=(r-s)/a.pathLength:o-=(s-r)/a.pathLength,o>1&&(o=1,d=!0),n=Kinetic.Path.getPointOnCubicBezier(o,a.start.x,a.start.y,a.points[0],a.points[1],a.points[2],a.points[3],a.points[4],a.points[5]);break;case"Q":0===o?o=r/a.pathLength:r>s?o+=(r-s)/a.pathLength:o-=(s-r)/a.pathLength,o>1&&(o=1,d=!0),n=Kinetic.Path.getPointOnQuadraticBezier(o,a.start.x,a.start.y,a.points[0],a.points[1],a.points[2],a.points[3])}void 0!==n&&(s=Kinetic.Path.getLineLength(i.x,i.y,n.x,n.y)),d&&(d=!1,a=void 0)}},l=0;le;e++)i=r*Math.sin(2*e*Math.PI/a),n=-1*r*Math.cos(2*e*Math.PI/a),t.lineTo(i,n);t.closePath(),t.fillStrokeShape(this)}},Kinetic.Util.extend(Kinetic.RegularPolygon,Kinetic.Shape),Kinetic.Factory.addGetterSetter(Kinetic.RegularPolygon,"radius",0),Kinetic.Factory.addGetterSetter(Kinetic.RegularPolygon,"sides",0),Kinetic.Collection.mapMethods(Kinetic.RegularPolygon),Kinetic.Star=function(t){this.___init(t)},Kinetic.Star.prototype={___init:function(t){Kinetic.Shape.call(this,t),this.className="Star",this.sceneFunc(this._sceneFunc)},_sceneFunc:function(t){var e=this.innerRadius(),i=this.outerRadius(),n=this.numPoints();t.beginPath(),t.moveTo(0,0-i);for(var a=1;2*n>a;a++){var r=a%2==0?i:e,s=r*Math.sin(a*Math.PI/n),o=-1*r*Math.cos(a*Math.PI/n);t.lineTo(s,o)}t.closePath(),t.fillStrokeShape(this)}},Kinetic.Util.extend(Kinetic.Star,Kinetic.Shape),Kinetic.Factory.addGetterSetter(Kinetic.Star,"numPoints",5),Kinetic.Factory.addGetterSetter(Kinetic.Star,"innerRadius",0),Kinetic.Factory.addGetterSetter(Kinetic.Star,"outerRadius",0),Kinetic.Collection.mapMethods(Kinetic.Star),function(){var t=["fontFamily","fontSize","fontStyle","padding","lineHeight","text"],e="right",i="down",n="left",a=t.length;Kinetic.Label=function(t){this.____init(t)},Kinetic.Label.prototype={____init:function(t){var e=this;Kinetic.Group.call(this,t),this.className="Label",this.on("add.kinetic",function(t){e._addListeners(t.child),e._sync()})},getText:function(){return this.find("Text")[0]},getTag:function(){return this.find("Tag")[0]},_addListeners:function(e){var i,n=this,r=function(){n._sync()};for(i=0;a>i;i++)e.on(t[i]+"Change.kinetic",r)},getWidth:function(){return this.getText().getWidth()},getHeight:function(){return this.getText().getHeight()},_sync:function(){var t,a,r,s,o,c,h,l=this.getText(),d=this.getTag();if(l&&d){switch(t=l.getWidth(),a=l.getHeight(),r=d.getPointerDirection(),s=d.getPointerWidth(),h=d.getPointerHeight(),o=0,c=0,r){case"up":o=t/2,c=-1*h;break;case e:o=t+s,c=a/2;break;case i:o=t/2,c=a+h;break;case n:o=-1*s,c=a/2}d.setAttrs({x:-1*o,y:-1*c,width:t,height:a}),l.setAttrs({x:-1*o,y:-1*c})}}},Kinetic.Util.extend(Kinetic.Label,Kinetic.Group),Kinetic.Collection.mapMethods(Kinetic.Label),Kinetic.Tag=function(t){this.___init(t)},Kinetic.Tag.prototype={___init:function(t){Kinetic.Shape.call(this,t),this.className="Tag",this.sceneFunc(this._sceneFunc)},_sceneFunc:function(t){var a=this.getWidth(),r=this.getHeight(),s=this.getPointerDirection(),o=this.getPointerWidth(),c=this.getPointerHeight(),h=this.getCornerRadius();t.beginPath(),t.moveTo(0,0),"up"===s&&(t.lineTo((a-o)/2,0),t.lineTo(a/2,-1*c),t.lineTo((a+o)/2,0)),h?(t.lineTo(a-h,0),t.arc(a-h,h,h,3*Math.PI/2,0,!1)):t.lineTo(a,0),s===e&&(t.lineTo(a,(r-c)/2),t.lineTo(a+o,r/2),t.lineTo(a,(r+c)/2)),h?(t.lineTo(a,r-h),t.arc(a-h,r-h,h,0,Math.PI/2,!1)):t.lineTo(a,r),s===i&&(t.lineTo((a+o)/2,r),t.lineTo(a/2,r+c),t.lineTo((a-o)/2,r)),h?(t.lineTo(h,r),t.arc(h,r-h,h,Math.PI/2,Math.PI,!1)):t.lineTo(0,r),s===n&&(t.lineTo(0,(r+c)/2),t.lineTo(-1*o,r/2),t.lineTo(0,(r-c)/2)),h&&(t.lineTo(0,h),t.arc(h,h,h,Math.PI,3*Math.PI/2,!1)),t.closePath(),t.fillStrokeShape(this)}},Kinetic.Util.extend(Kinetic.Tag,Kinetic.Shape),Kinetic.Factory.addGetterSetter(Kinetic.Tag,"pointerDirection","none"),Kinetic.Factory.addGetterSetter(Kinetic.Tag,"pointerWidth",0),Kinetic.Factory.addGetterSetter(Kinetic.Tag,"pointerHeight",0),Kinetic.Factory.addGetterSetter(Kinetic.Tag,"cornerRadius",0),Kinetic.Collection.mapMethods(Kinetic.Tag)}(),Kinetic.Arrow=function(t){this.____init(t)},Kinetic.Arrow.prototype={____init:function(t){Kinetic.Line.call(this,t),this.className="Arrow"},_sceneFunc:function(t){var e=2*Math.PI,i=this.points(),n=i.length,a=i[n-2]-i[n-4],r=i[n-1]-i[n-3],s=(Math.atan2(r,a)+e)%e,o=this.pointerLength(),c=this.pointerWidth();t.save(),t.beginPath(),t.translate(i[n-2],i[n-1]),t.rotate(s),t.moveTo(0,0),t.lineTo(-o,c/2),t.lineTo(-o,-c/2),t.closePath(),t.restore(),this.pointerAtBeginning()&&(t.save(),t.translate(i[0],i[1]),a=i[2]-i[0],r=i[3]-i[1],t.rotate((Math.atan2(-r,-a)+e)%e),t.moveTo(0,0),t.lineTo(-10,6),t.lineTo(-10,-6),t.closePath(),t.restore()),t.fillStrokeShape(this),Kinetic.Line.prototype._sceneFunc.apply(this,arguments)}},Kinetic.Util.extend(Kinetic.Arrow,Kinetic.Line),Kinetic.Factory.addGetterSetter(Kinetic.Arrow,"pointerLength",10),Kinetic.Factory.addGetterSetter(Kinetic.Arrow,"pointerWidth",10),Kinetic.Factory.addGetterSetter(Kinetic.Arrow,"pointerAtBeginning",!1),Kinetic.Collection.mapMethods(Kinetic.Arrow),function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):"undefined"!=typeof module&&module.exports?module.exports=t(require("jquery")):t(jQuery)}(function(t){"use strict";function e(t){return!t.nodeName||-1!==jQuery.inArray(t.nodeName.toLowerCase(),["iframe","#document","html","body"])}function i(t){return jQuery.isFunction(t)||jQuery.isPlainObject(t)?t:{top:t,left:t}}var n=jQuery.scrollTo=function(t,e,i){return jQuery(window).scrollTo(t,e,i)};return n.defaults={axis:"xy",duration:0,limit:!0},jQuery.fn.scrollTo=function(t,a,r){"object"==typeof a&&(r=a,a=0),"function"==typeof r&&(r={onAfter:r}),"max"===t&&(t=9e9),r=jQuery.extend({},n.defaults,r),a=a||r.duration;var s=r.queue&&1=f[p]?0:Math.min(f[p],y)),!t&&1